[Android] warning: Schema export directory is not provided ···
·
Android/이슈 처리
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] Deprecated Gradle features were used in ···
·
Android/이슈 처리
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] Failed to instantiate test runner class ···
·
Android/이슈 처리
Failed to instantiate test runner class androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner Test 코드 실행 시 @Test 주석이 없어서 발생한 에러로 아래와 같이 주석을 추가해준다.@Testfun test() {}
[Android] An instance of PagingSource was re-used ···
·
Android/이슈 처리
기존 프로젝트에서 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] :app:hiltJavaCompileDebug
·
Android/이슈 처리
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] Permission denied (publickey).
·
Android/이슈 처리
새로운 기기에 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] 안드로이드 스튜디오의 사이드 바에서 commit 탭 추가하기
·
Android Studio
File > Settings > Version Control > Commit 에서 Use non-modal commit interface를 체크.
[Android] Paging3에서 데이터 없을 때 처리하기
·
Android/UI
Paging3는 PagingData를 PagingDataAdapter의 submitData로 전달하여 리스트를 표시한다. 만약 리스트에 표시할 데이터가 없는 경우 초기 화면을 표시해야 하지만,데이터가 없어도 PagingData는 null이나 empty로 내려오지 않는다. 이럴 때 PagingDataAdapter의 addLoadStateListener를 사용하면 데이터가 없을 때 처리를 할 수 있다.addLoadStateListener는 CombinedLoadState로 현재 PagingData의 로딩 상태를 관찰한다. CombinedLoadStates의 LoadState 정보는 다음과 같다.(참고)• append 목록의 끝에서 데이터를 로드하는 상태• prepend 목록의 시작 부분에서 데이터를 로드..
[Android] adb로 기기의 해상도를 확인하고 변경하기
·
Android/ADB
안드로이드 개발을 하다 보면 해상도별로 앱이 어떻게 표시되는지 확인하고 싶을 때가 있다.이럴 때 adb를 사용하면 기기의 해상도를 쉽게 변경할 수 있다. adb의 명령어 중에서 adb shell wm 이라고 있는데, 이 명령어를 사용하면 안드로이드 기기의 Window Manager를 제어하고 관련 정보를 확인할 수 있다. 프롬프트에 아래와 같이 명령어를 입력하면 Window Manager의 명령어 리스트가 표시된다.이 중에서 size와 density는 각각 기기의 해상도와 화면 밀도를 담당한다.size : 기기 크기인 화면상의 총 픽셀 수(해상도)density : 기기 화면 밀도(dpi)기기 해상도adb shell wm size를 입력하면 해상도 값을 얻을 수 있다.해상도를 변경하고 싶다면 adb s..
[Android] Glide, 모서리 둥글게 처리하기
·
Android/UI
.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] error: To use Coroutine features, you must ···
·
Android/이슈 처리
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] ADB로 Task와 Stack 확인하기
·
Android/ADB
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 정보를 얻으려면 위 명령어를 사용하..