전체 글 411

[Android] Gson으로 데이터를 가져오지 못할 때 (코드 난독화)

Gson라이브러리를 이용하여 데이터를 가져왔는데 코드 난독화를 하면 에러가 발생하면서 앱이 종료 되었다. java.lang.NullPointerException: throw with null exception at package.Response$b.hashCode(Unknown Source:3) 1) 해당 data쪽 모델을 keep class로 난독화 해제를 해주었지만 에러남 2) 찾아보니 gson.fromJson이 일을 제대로 하고 있지 않다고 한다. 해결방법 1) gradle.properties파일을 열고 android.enableR8=false 2) proguard-rules.pro 파일에 R8 방지 코드를 추가. -keepclassmembers,allowobfuscation class * { @c..

트레블월렛(Travel Wallet), 트레블페이 사용 방법

트레블월렛 Travel Wallet 이란? 트레블월렛(Travel Wallet)은 해외 결제 관련 어플로 해당 어플을 통해 트레블페이를 사용할 수 있다. 트레블페이? 어플을 이용하여 카드에 15개 외화를 미리 충전하고 충전된 외화로 수수료 없이 해외 결제하는 외화 충전 / 결제 서비스이다. 선불식 충전카드라고 생각 하면 됩니다. 장점? 연회비 무료 해외 현지 결제 수수료 무료 현지 ATM 출금 가능 카드 하나에 15개 외화 충전 가능 실시간 환율로 외화 충전 현지 비자 가맹점 카드 결제 가능 해외 직구 결제 수수료 무료 카드 분실 시 앱에서 바로 비활성화 가능 교통카드 사용 가능 (단, 사용가능한 국가와 도시가 정해져 있음) 카드 발급 방법 1. 트레블월렛 앱 설치 2. 앱에서 은행 계좌 등록 3. 모바..

여행 2024.03.19

[Kotlin] 코틀린이란 무엇이며, 왜 필요한가?

코틀린이란? 자바 플랫폼에서 돌아가는 프로그래밍 언어 자바와의 상호운용성에 초점을 맞춘 실용적이고 간결하며 안전한 언어 대상 플랫폼 서버 (backend) 안드로이드 모바일 애플리케이션 등등 (iOS, 자바스크립트…) 코틀린은 정적 타입(statically typed) 지정 언어 정적 타입 지정 언어? : 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 필드나 메소드 사용 시 컴파일러가 타입을 검증해준다. 동적 타입 지정 언어? : 타입 관계없이 모든 값을 변수에 넣을 수 있고, 실행 시점에 필드나 메소드에 대한 검증한다. (Groovy, JRuby 등) 정적 타입 지정 언어 장점 성능 : 컴파일 시점에 메소드 호출 여부를 알고 있어서 빠르다. 신뢰성 : 컴파일러가 컴파일 시점에 프로그램의 정확..

[Android] FCM을 사용해서 메시지를 보내는 과정 (FCM 추가)

FCM을 사용해서 메시지를 보내는 과정 1. 토큰 요청 및 획득 먼저 사용자가 앱을 설치하고 최초 실행시 토큰을 얻기위해 클라우드 서버에 요청을 보내고 토큰을 획득 2. 서버에 토큰 저장 획득한 토큰을 서버로 전송하여 서버 db에 저장 3. 토큰을 이용해 메시지 전송 요청 서버에서 클라우드로 메시지 데이터와 함께 토큰을 보내 전송을 요청 4. 메시지 전송 클라우드는 요청 받은 메시지를 토큰에 해당하는 단말기에 전송 5. 리스너를 통해 메시지 수신 앱이 실행중이 아니더라도 리스너를 통해 메시지를 수신할 수 있다. 프로젝트 설정 1. 구글 firebase console접속 2. 안드로이드 프로젝트 생성 후 google-service.json을 다운 받아 앱 모듈 루트 디렉토리에 넣는다. 안드로이드 스튜디오 ..

안드로이드 2024.03.19

[Kotlin] 기본 요소 함수와 변수에 대해 알아보자 (1)

코틀린에서 타입 선언을 생략해도 된다. # 코틀린 특징 코틀린 표준 라이브러리는 여러가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼(wrapper)를 제공 줄 끝에 세미콜론(;)을 붙이지 않아도 된다. if는(값을 만들어내지 못하는 문장이 아니고 결과를 만드는 식) 문(statement)과 식(expression) 식은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있다. 문은 가장 안쪽 블록의 최상위 요소로 존재, 아무런 값을 만들어내지 않는다. 코틀린은 루프를 제외한 대부분의 제어 구조가 식이다 자바는 모든 제어 구조가 문이다 반면 대입문은 자바에서는 식이었으나, 코틀린에서는 문이 됐다. # 함수 fun max(a: Int, b: Int): Int { } 함수를 선언..

[Kotlin] 기본 요소 함수와 변수에 대해 알아보자 (2)

함수와 변수 #While 루프 while (조건) { /*...*/ //조건이 참인 동안 본문을 반복 실행한다. } do { /*...*/ } while (조건) //맨 처음에 무조건 본문을 한 번 실행한 다음, 조건이 참인 동안 본문을 반복 실행한다. #범위와 수열 자바의 for 루프(어떤 변수를 초기화하고 그 변수를 루프가 한 번 실행할 때마다 갱신하고 루프 조건이 거짓이 될 때 반복을 마치는 형태의 루프)에 해당하는 요소가 없다. 이를 대신하기 위해 코틀린에서는 **범위(range)**를 이용한다. fun fizzBuzz(i: Int) = when { i % 15 == 0 -> "FizzBuzz" i % 3 == 0 -> "Fizz" i % 5 == 0 -> "Buzz" else -> "$i" } ..

[Kotlin] 코틀린 함수 정의와 호출

코틀린 함수 정의와 호출 코틀린이 자체 컬렉션을 제공하지 않는 이유? - 자바 코드와 상호작용하기가 훨씬 더 쉽다. # 이름 붙인 인자 함수 호출 부분의 가독성 함수에 전달하는 인자 중 일부(또는 전부)의 이름을 명시할 수 있다. 하나라도 이름을 명시하면 뒤에 오는 모든 인자는 이름을 명시 해야 한다. # 디폴트 파라미터 값 함수 선언에서 파라미터의 디폴트 값을 지정할 수 있으므로 이런 오버로드 중 상당수를 피할 수 있다. # 최상위 프로퍼티 함수와 마찬가지로 프로퍼티도 파일의 최상위 수준에 놓을 수 있다. 이런 프로퍼티의 값은 정적 필드에 저장 된다. 더 자연스럽게 사용하려면 이 상수를 public static final 필드로 컴파일해야 한다. const변경자를 추가하면 된다. # 확장 함수와 확장 ..

[Kotlin] 클래스, 객체, 인터페이스에 대해 알아보자(1)

코틀린의 클래스와 인터페이스는 자바와는 약간 다르다 인터페이스에 프로퍼티 선언이 들어갈 수 있다. 코틀린 선언은 기본적으로 final이며 public이다. 중첩 클래스는 내부 클래스가 아니다. 즉, 코틀린 중첩 클래스에는 외부 클래스에 대한 참조가 없다. 코틀린 컴파일러는 유용한 메서드를 자동으로 만들어 준다. 클래스를 data로 선언하면 일부 표준 메서드를 생성해준다. object키워드 : 클래스와 인스턴스를 동시에 선언 싱글턴 클래스, 동반객체(companion object), 객체 식(object expression(자바의 무명클래스) 코틀린 언어가 제공하는 위임(delegation)을 사용하면 준비 메서드를 직접 작성할 필요가 없다. Delegation 이란? by 키워드를 활용한 Properti..

[Kotlin] 클래스, 객체, 인터페이스에 대해 알아보자 (2)

Kotlin 클래스, 객체, 인터페이스 Any class The root of the Kotlin class hierarchy. Every Kotlin class has Any as a superclass. open function으로 equals, hashCode, toString을 제공 equals, hashCode, toString 코틀린 컴파일러가 보이지 않는 곳에서 생성해 준다. 문자열 표현: toString() 인스턴스의 문자열 표현 제공 디버깅과 로깅 시 사용 객체의 동등성: equals() 자바 equals 객체의 동등성 자바 ‘==’ 원시 타입 에서는 값 비교 참조 타입 에서는 주소 비교 코틀린 ‘==’ 내부적으로 equals를 호출 객체의 동등성 값 비교 코틀린 ‘===’ 주소 비교 참..

[Android] Exoplayer란?

스트리밍 https://developer.android.com/codelabs/exoplayer-intro#0 ExoPlayer를 사용한 미디어 스트리밍 | Android Developers 이 Codelab에서는 Android YouTube 앱에서 실행되는 오픈소스 미디어 플레이어인 ExoPlayer를 사용하여 미디어 플레이어를 빌드하여 오디오 및 가변 품질 동영상 스트림을 렌더링합니다. Codelab에서는 라 developer.android.com Exoplayer란? 안드로이드에서 영상 재생을 위해 사용하는 플레이어로 기본 내장 라이브러리인 MediaPlayer가 있었는데 스트리밍 서비스가 주류를 이루면서 구글에서 DASH와 SmoothStreaming을 지원하는 ExoPlayer라이브러리를 도입했..

안드로이드 2024.03.18