JDK 안드로이드 스튜디오를 사용해 빌드하면, 자체적으로 설정된 JDK를 사용한다. sudio.jdk 디렉토리가 있음. 또는, JetBrains Runtime(JBR)이라고 JDK확장버전을 안드로이드 스튜디오랑 함께 배포하게 되는데, 이를 사용하고 이 방법이 권장된다. 커맨드 라인으로 빌드하게 되면, JAVA_HOME을 찾고 없으면 PATH에 있는 java를 실행하게 되는데, 이 경우 안드로이드 스튜디오와 JDK가 안맞게 된다. 같이 사용한다면, 두 버전을 맞춰줘야 함. 빌드 할 때 처음에는…
[카테고리:] 코틀린
Kotlin 관련 메모
Android: Kapt to KSP
공식 문서 Migrate from kapt to KSP 에 잘 설명되어 있다. Kapt Kapt는 the Kotlin Annotation Processing Tool 의 약자로 Java Annotation을 코틀린에서 사용가능하도록 만들어준다. 결과적으로 Kotlin 코드에서 Annotation들의 사용이 가능해진다. 예를 들면, Room Database를 사용시 다음과 같은 Dao코드를 필요로 하는데, @Dao, @Query 등이 코드에 부가적으로 달려있는 annotation이며 Kapt는 이를 해석하고 필요한 코드를 생성하는 역할을…
Android: External Storage and Storage Access Framework(SAF)
개요 SD Card 또는 External Storage에 대해 가볍게 접근했다가 대혼돈이라는걸 뒤늦게 알았다. 내맘같아선, 그냥 기존처럼 자유롭게 접근하게 냅두면 좋겠지만… 모든 변화의 핵심은 Internal Storage 수준의 보안과 권한(Permission)이다. 사족을 달자면, 대부분 앱들은 아이폰용으로도 개발되기 때문에 이 골치아픈 External Storage를 다루지 않고 전부 Internal Storage만 사용한다, 카카오 톡처럼. 내용을 볼수록 이것도 이해가 되긴 하는데, 안드로이드 유저로선 그냥…
Android : Intent 정리 #1
명시적 인텐트(Explicit Intent) 요즘엔 단일 Activity로 앱 개발이 주로 이루어지지만, 초기에는 모두 Activity로 만들어졌었다. 하나의 앱내에서도 Activity를 띄우기 위해선 startActivity()를 사용하는데, 인자로 Intent객체를 넘겨줬다. Activity를 띄우는 예제 코드를 보면 다음과 같다. Intnet 객체를 생성하는 첫번째 인자는 Context이고, 두번째는 불러올 Activity의 클래스 이름이다. “::class.java” 는 무엇일까? ::class 는 Kotlin에서 KClass를 리턴해주는 reflection 문법이다. 안드로이드 Intent는 java…
Android : Navigation
시기상으로 너무 늦게작성되는 포스팅인데… 지금 시점이라면, Jetpack Compose에서 Navigation의 사용을 설명해야 하나, 내가 아직 잘 모르고 XML도 혼용해서 사용중이라서 XML사용하는 Fragment들간의 Navigation을 설명하는 포스팅을 올린다. Principles of Navigation Navigation의 구현 이전에, 지켜져야 하는 디자인 원리를 짚고 넘어가자. 다음의 Principles of Navigation은 Navigation component를 쓰지 않더라도 지켜져야 한다. Navigation component를 사용하는 경우 지원되는 내용이기도 하다. 시작…