개발공부/Android-Kotlin

[Android/Kotlin] 초기 설정 및 에러 처리

예슬예 2022. 7. 4. 18:44

원래 JAVA 로 짜놨던 앱을 Kotlin으로 리팩토링 하려는 계획이 있었다. 하지만 난 Kotlin으로 한번도 Android 프로젝트를 실행한 적이 없기 때문에 가볍게 강의를 통해 학습하려고 했다. 영상에서 하라는대로 따라 했는데.. 아니 그저 초기 설정값 그대로 실행했는데... 에러가 줄줄이로 떴다. 초기에 이런 에러가 뜨는 사람이 많을 듯 하여 그 해결 과정을 정리해보려 한다.


 

우선 나의 SDK version은 31이다. 이것부터 맞춰주고 가는 것이 수월할 듯 하다. 당연하겠지만 SDK manager를 통해 SDK version 31이 깔려 있는 지 먼저 확인해준다. 깔려있다면, app 단위의 build.gradle 파일로 들어가서 compileSdkVersion과 targetSdkVersion을 아래와 같이 수정한다.

나는 이 프로젝트를 열었을 때 CompileOptions이 설정되어있지 않았다. 위의 사진처럼 android { } 이 범위 안에 CompileOptions 이 설정되어있지 않다면 아래와 같은 코드를 추가해줘야 한다. JAVA 8을 이용하기 위한 과정이다.

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

밑에 kotlinOptions 에 대한 것은 kotlin compiler의 버전을 설정해준 것이다. Java의 버전과 맞춰줘야 함을 나타내기 위해 썼다. 하지만 설정에서 직접 바꿔준다면 굳이 코드로 작성하지 않아도 된다. (File 탭에서 Settings으로 들어간 후 Kotlin Compiler 탭을 선택하면 target JVM version을 설정할 수 있다.) 단, JAVA로만 프로젝트를 진행할 예정이라면 Kotlin Options에 대해서는 설정해주지 않아도 무방하다.


마지막으로 AndroidManifest.xml 파일에서 수정할 부분이 있다. MainActivity에 대해서 intent-filter가 설정되어 있는데, 안드로이드 버전 12, 즉 sdk 31버전부터는 intent-filter를 사용할 때 추가적으로 설정해야할 것이 생겼다. 아래와 같이 <activity 단에 

android:exported="true" 를 넣어주면 된다. 외부앱이나 시스템에서 해당 Activity를 실행시킬 수 있는지에 대한 설정이다. sdk 버전 31부터 이를 명시적으로 설정해야해서 이 코드를 넣어주면 된다.

 

이런 과정을 거치면 대부분의 에러가 처리돼고 정상적으로 실행이 될 것이다. 다만 각자 원하는 버전에 맞게 조정을 해줘야 한다.

 

SDK 다른 버전 다운 받는데 시간이 꽤나 걸렸기에.. 개인적으로 업그레이드가 그만 되길 바라는 바이다...ㅎㅎ