Android54 [Android] SplashScreen 사용하기 Android 12부터 스플래시 화면을 구현하기 위한 SplashScreen API(참고)가 추가되면서 모든 앱이 시작할 때 스플래시 화면에 앱 아이콘을 보여주게 되었다. 이것 때문에 SplashScreen의 처리를 하지 않으면 앱 아이콘이 포함된 스플래시 화면이 먼저 노출되었다가 사용자가 구현한 스플래시 화면이 보이는 이슈가 생겼다. 기존에는 스플래시 화면을 구현하기 위해서 직접 화면을 만들어야 했다. 하지만 SplashScreen이 등장하고 나서는 직접 화면을 만들 필요도 없고 애니메이션과 같은 효과와 더불어 스플래시 화면을 간단하게 만들 수 있게 되었다. 그럼 기존 방식에 문제가 있었는가 하면 앱의 시작 상태 중 Hot Start에 그 이유가 있다. Hot Start 상태에서는 앱이 실행될 때 메모.. Android/Splash 2023. 4. 16. [Android] warning: Schema export directory is not provided ··· warning: Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false. 위 경고 메시지는 Room 라이브러리를 사용해서 데이터베이스 스키마를 생성할 때 exportSchema 설정에 의해 위의 경고가 뜬다. exportSchema는 Boolean 타입으로 데이터베이스 스키마를 폴더로 내보낼지 정할 수 있다. default 값이 true로 되어있는데 폴더 경로를 정해줘야 한다. 경로를 정해주지 않으면.. Android/이슈 처리 2023. 4. 7. [Android] Deprecated Gradle features were used in ··· Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. UnitTest 코드 실행 시 해당 warning 코드가 발생했다. Build 시 Gradle 8.0과 호환되지 않는 deprecated 된 기능을 사용하고 있어서 발생한 경고 문구라고 한다. settings.gradle에 jcenter()가 등록되어 있었는데 이 부분을 제거하니까 경고 문구가 사라졌다. 찾아보니 JCenter의 지원을 중단한 것 같다. JCenter service update | Android Developers Migrating Android dependencies from JCenter developer.android.com Android/이슈 처리 2023. 4. 5. [Android] Failed to instantiate test runner class ··· Failed to instantiate test runner class androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner Test 코드 실행 시 @Test 주석이 없어서 발생한 에러로 아래와 같이 설정을 하면 된다. @Test fun test() { } Android/이슈 처리 2023. 3. 22. [Android] An instance of PagingSource was re-used ··· 기존 프로젝트에서 Hilt를 적용을 위해 코드를 수정하였는데 Paging3 Adapter의 refresh() 호출 시 앱이 죽는 현상이 발생했다. java.lang.IllegalStateException: An instance of PagingSource was re-used when Pager expected to create a new instance. Ensure that the pagingSourceFactory passed to Pager always returns a new instance of PagingSource. 에러의 내용은 Pager가 새로운 인스턴스를 만들 때 PagingSource의 인스턴스를 재사용한다는 것이다. 문제가 되는 코드는 아래와 같았다. Repository @Sing.. Android/이슈 처리 2023. 3. 17. [Android] :app:hiltJavaCompileDebug Hilt를 공부하던 중 다음과 같은 에러가 발생했다. Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException: Unsupported metadata version. Check that your Kotlin version is >= 1.0 해당 에러를 찾아보니 코틀린과 Hilt의 호환 문제가 있다는 것 같다. 내가 사용하던 버전은 코틀린 1.7.20, Hilt 2.40.1 이였는데, 코틀린 버전을 1.8.0, Hilt 버전을 2.44로 변경했더니 빌드에 성공했다. Android/이슈 처리 2023. 3. 16. [Android] Permission denied (publickey). 새로운 기기에 github 계정을 연결하고 commit 내용을 push 하려는데 아래 에러가 발생했다. 위 내용을 찾아보니 현재 기기의 SSH key가 git에 등록되지 않아서라고 한다. 우선, Terminal을 열고 ssh-keygen -t rsa -C "github 이메일"을 입력한다. 명령어를 입력하면 파일 위치에 대한 설정을 하게 되는데 그냥 엔터를 누르면 괄호 안의 경로 (Users/~/.ssh/id_rsa)에 ssh 파일이 생성된다. id_rsa.pub 파일을 열어서 내용을 복사한다. github 사이트의 Settings > Access > SSH and GPG keys 탭에 들어간다. 복사해 둔 키를 입력하면 끝. ssh -T git@github.com을 입력해서 접속 테스트를 해볼 수 있다.. Android/이슈 처리 2023. 3. 8. [Android] Paging3에서 데이터 없을 때 처리하기 Paging3는 PagingData를 PagingDataAdapter의 submitData로 전달하여 리스트를 표시한다. 만약 리스트에 표시할 데이터가 없는 경우 초기 화면을 표시해야 하지만, 데이터가 없어도 PagingData는 null이나 empty로 내려오지 않는다. 이럴 때 PagingDataAdapter의 addLoadStateListener를 사용하면 데이터가 없을 때 처리를 할 수 있다. addLoadStateListener는 CombinedLoadState로 현재 PagingData의 로딩 상태를 관찰한다. CombinedLoadStates의 LoadState 정보는 다음과 같다.(참고) • append 목록의 끝에서 데이터를 로드하는 상태 • prepend 목록의 시작 부분에서 데이터를 .. Android/Paging3 2023. 2. 20. [Android] adb로 기기의 해상도를 확인하고 변경하기 안드로이드 개발을 하다 보면 해상도별로 앱이 어떻게 표시되는지 확인하고 싶을 때가 있다.이럴 때 adb를 사용하면 기기의 해상도를 쉽게 변경할 수 있다. adb shell wm우선 프롬프트에서 adb shell wm을 입력하면 Window Manager의 명령어 리스트들이 나온다.이 중에서 size와 densitiy 명령어를 사용하여 해상도를 확인하고 수정할 수 있다.size : 기기 크기인 화면상의 총 픽셀 수(해상도)density : 기기 밀도(dpi)adb shell wm sizeadb shell wm size를 입력하면 해상도 값을 얻을 수 있다.해상도를 변경하고 싶다면 adb shell wm size 뒤에 변경할 값을 입력하면 된다.ex) adb shell wm size 1080x2220 값을.. Android/ADB 2023. 2. 13. [Android] Glide, 모서리 둥글게 처리하기 .apply(RequestOptions.bitmapTransform(RoundedCorners(정수 값))) Glide를 사용해서 이미지를 표시할 때, 모서리를 둥글게 하려면 위의 코드를 추가하면 된다. Glide.with(this) .load(R.drawable.sample) .into(mBinding.ivMain) Glide.with(this) .load(R.drawable.sample) .apply(RequestOptions.bitmapTransform(RoundedCorners(80))) .into(mBinding.ivMain) Android/Glide 2023. 2. 6. [Android] error: To use Coroutine features, you must ··· error: To use Coroutine features, you must add `ktx` artifact from Room as a dependency. androidx.room:room-ktx: Room 라이브러리를 사용하고 있었고, Dao에서 suspend를 추가하였는데 해당 에러가 발생했다. Dao를 선언할 때 suspend 키워드를 붙이면 Room에서 suspend 함수로 구현을 해주는데 해당 기능을 해주는 라이브러리가 없어서 발생한 에러인 것 같다. implementation "androidx.room:room-ktx:2.4.3" gradle에 추가하면서 문제를 해결됐다. Android/이슈 처리 2023. 1. 26. [Android] ADB로 Task와 Stack 확인하기 adb shell "dumpsys activity activities" ( "" 없어도 됨 ) 터미널에서 위 명령어를 입력하면 연결된 기기에서 활성화된 앱에 대한 Activity 정보를 읽는다. 위 정보에 Task와 Stack이 포함되어 있어 해당 부분을 찾으면 된다. (Task와 Stack 이외의 정보들이 많기 때문에 오래 걸릴 수 있음) adb shell "dumpsys activity activities | grep -i Hist" 불필요한 정보는 필터링을 통해서 Stack에 대한 정보만 얻을 수 있다. adb shell dumpsys activity activities | grep -i $packageName | grep -i Hist 특정 앱에 대한 Stack 정보를 얻으려면 위 명령어를 사용하.. Android/ADB 2023. 1. 25. 이전 1 2 3 4 5 다음