728x90
안드로이드 어플 심사할 때 패키지명을 변경하라고 하는 경우가 있습니다
flutter 로 프로젝트 생성 하면 기본 패키지가 "com.example.프로젝트명" 이렇게 됩니다.
이때 example 을 패키지명으로 사용하지 말라고 하기 때문에 변경합니다.
그리고 빌드를 하면 아래와 같은 오류가 발생 합니다.
오류 내용 : FATAL EXCEPTION: main
E/AndroidRuntime(14305): FATAL EXCEPTION: main
E/AndroidRuntime(14305): Process: com.taekistyle.avg_price, PID: 14305
E/AndroidRuntime(14305): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.taekistyle.avg_price/com.taekistyle.avg_price.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.taekistyle.avg_price.MainActivity" on path: DexPathList[[zip file "/data/app/~~tHfC_LFnKhojtwHZKORE3Q==/com.taekistyle.avg_price-ttgOUIXZ_ldrVzk2_cY5gA==/base.apk"],nativeLibraryDirectories=[/data/app/~~tHfC_LFnKhojtwHZKORE3Q==/com.taekistyle.avg_price-ttgOUIXZ_ldrVzk2_cY5gA==/lib/arm64, /data/app/~~tHfC_LFnKhojtwHZKORE3Q==/com.taekistyle.avg_price-ttgOUIXZ_ldrVzk2_cY5gA==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
E/AndroidRuntime(14305): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3689)
E/AndroidRuntime(14305): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922)
E/AndroidRuntime(14305): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
E/AndroidRuntime(14305): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
E/AndroidRuntime(14305): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
E/AndroidRuntime(14305): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
E/AndroidRuntime(14305): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(14305): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(14305): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E/AndroidRuntime(14305): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E/AndroidRuntime(14305): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.taekistyle.avg_price.MainActivity" on path: DexPathList[[zip file "/data/app/~~tHfC_LFnKhojtwHZKORE3Q==/com.taekistyle.avg_price-ttgOUIXZ_ldrVzk2_cY5gA==/base.apk"],nativeLibraryDirectories=[/data/app/~~tHfC_LFnKhojtwHZKORE3Q==/com.taekistyle.avg_price-ttgOUIXZ_ldrVzk2_cY5gA==/lib/arm64, /data/app/~~tHfC_LFnKhojtwHZKORE3Q==/com.taekistyle.avg_price-ttgOUIXZ_ldrVzk2_cY5gA==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
E/AndroidRuntime(14305): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
E/AndroidRuntime(14305): at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(14305): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(14305): at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
E/AndroidRuntime(14305): at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:44)
E/AndroidRuntime(14305): at android.app.Instrumentation.newActivity(Instrumentation.java:1378)
E/AndroidRuntime(14305): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3676)
E/AndroidRuntime(14305): ... 12 more
이런 경우 총 4가지 부분에서 패키지 변경을 해주고 다시 빌드를 해야 합니다.
예를들어 변경한 패키지명이 "com.taekistyle.avg_price" 라고 가정하겠습니다.
example 부분을 taekistyle 로 변경한 경우 입니다.
{프로젝트 디렉토리}/android/app/build.gradle
{프로젝트 디렉토리}/android/app/src/main/AndroidManifest.xml
{프로젝트 디렉토리}/android/app/src/main/kotlin/com/{폴더명수정}/avg_price
{프로젝트 디렉토리}/android/app/src/main/kotlin/com/{폴더명수정}/avg_price/MainActivity.kt
1. {프로젝트 디렉토리}/android/app/build.gradle 파일 수정
아래처럼 namespace 와 applicationId 값을 변경 합니다.
android {
namespace = "com.taekistyle.avg_price"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.taekistyle.avg_price"
...
...
...
}
...
...
...
}
2. {프로젝트 디렉토리}/android/app/src/main/AndroidManifest.xml 파일 수정
manifest 에 package 값을 추가 합니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.taekistyle.avg_price">
...
...
...
</manifest>
3. {프로젝트 디렉토리}/android/app/src/main/kotlin/com/{폴더명수정}/avg_price
패키지명으로 폴더가 만들어져 있는데 변경한 패키지명으로 폴더명을 변경 합니다.
4. {프로젝트 디렉토리}/android/app/src/main/kotlin/com/{폴더명수정}/avg_price/MainActivity.kt 파일 수정
MainActivity.kt 파일 상단의 패키지명을 수정 합니다.
package com.taekistyle.avg_price
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()
이제 다시 빌드를 하면 정상적으로 빌드가 되고 에러가 발생하지 않는걸 확인 할 수 있습니다.
LIST
'Develop > Flutter' 카테고리의 다른 글
[Flutter] flutter create 명령어 옵션 정리 및 예제 (9) | 2024.09.28 |
---|---|
[Flutter 플러터] 안드로이드 심사 중 "버전 코드는 이미 사용되었습니다. 다른 버전 코드를 사용해 보세요." 해결방법 (15) | 2024.09.17 |
[Flutter 플러터] SafeArea 위젯 간단 설명과 사용법 (6) | 2024.09.01 |
[Flutter 플러터] 안드로이드 Play Store 앱 배포를 위해 aab 파일 만들기 - MAC (3) | 2024.08.31 |
[Flutter 플러터] IOS 앱스토어 버전 올려서 배포할 때 Xcode Cloud 빌드 오류 해결 (0) | 2024.08.25 |