[Android] Could not create task ':app:kspDebugKotlin'.
·
Android/이슈 처리
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. > Could not create task ':app:kspDebugKotlin'. > Cannot query the value of task ':app:kspDebugKotlin' property 'classpathSnapshotProperties.useClasspathSnapshot' because it has no value available.프로젝트를 새로 만들고 의존성을 추가 후 앱을 실행했더니 위와 같은 에러가 발생했다. 의존성을 추가하고 sync에서 문제가 발생하지 않아서 조금 헤매었는데, 이 에러는 KGP와 KSP의 버전이 불일치할 때 자주 나타..
[Android] Execution failed for task ':app:checkDebugDuplicateClasses' ···
·
Android/이슈 처리
Caused by: java.lang.RuntimeException: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20) Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules kotlin-stdlib-1.8.10 ··· Compose lifecycle 관련 라이브러리를 gradl..
[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 주석이 없어서 발생한 에러로 아래와 같이 설정을 하면 된다. @Test fun 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] 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] Duplicate class androidx.lifecycle ···
·
Android/이슈 처리
// Room 의존성 추가 implementation "androidx.room:room-runtime:2.4.3" kapt "androidx.room:room-compiler:2.4.3" // paging implementation "androidx.paging:paging-runtime-ktx:3.1.1" Room과 Paging3을 사용하기 위해 gradle 파일에 의존성을 추가하고 실행을 했는데, Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-viewmodel-2.5.1- runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.1) and lifecycle-viewmodel..
[Android] Could not find method kapt() for arguments ···
·
Android/이슈 처리
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method kapt() for arguments [androidx.room:room-compiler:2.4.3] on object of type org․gradle․api․internal․artifacts․dsl.dependencies.DefaultDependencyHandler. build.gradle에서 kapt 관련 의존성을 추가하고 sync를 했을 때 에러가 발생했다. 원인은 kotlin-kapt을 plugins에 추가하지 않아서였다. plugins { id 'com.android.appli..
[Android] Could not resolve all files for configuration ':app:debugCompileClasspath'.
·
Android/이슈 처리
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':app:debugCompileClasspath'. 에러가 발생했는데, build.gradle(Project) 파일에 jcenter() 를 추가하여 해결했다. repositories { google() jcenter() mavenCentral() }