[Android 출시 에러] Caused by: java.lang.ClassNotFoundException: Didn’t find class “.MainActivity”
‘com.example’은(는) 제한되어 있으므로 다른 패키지 이름을 사용해야 합니다.
패키지명 변경
- /android/app/buld.gradle -> defaultConfig 내 applicationId 값을 새로운 패키지 이름으로 변경
- /app/src/ 하위에 있는 debug, main, profile 폴더에 AndroidManifest.xml 파일을 열어
태그의 옵션값인 package를 찾아 모두 패키지 이름을 변경 - google-services.json 안에 있는 패키지명도 변경
- 끝?
에러 발생
E/AndroidRuntime(10676): FATAL EXCEPTION: main
E/AndroidRuntime(10676): Process: com.cra.han_bab, PID: 10676
E/AndroidRuntime(10676): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.cra.han_bab/com.cra.han_bab.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.cra.han_bab.MainActivity" on path: DexPathList[[zip file "/data/app/com.cra.han_bab-5rqLLH6n-NUvOtf0Vbg2Pw==/base.apk"],nativeLibraryDirectories=[/data/app/com.cra.han_bab-5rqLLH6n-NUvOtf0Vbg2Pw==/lib/arm64, /data/app/com.cra.han_bab-5rqLLH6n-NUvOtf0Vbg2Pw==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/AndroidRuntime(10676): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3547)
E/AndroidRuntime(10676): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3806)
E/AndroidRuntime(10676): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
E/AndroidRuntime(10676): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime(10676): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime(10676): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267)
E/AndroidRuntime(10676): at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(10676): at android.os.Looper.loop(Looper.java:237)
E/AndroidRuntime(10676): at android.app.ActivityThread.main(ActivityThread.java:8167)
E/AndroidRuntime(10676): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(10676): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
E/AndroidRuntime(10676): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
E/AndroidRuntime(10676): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.cra.han_bab.MainActivity" on path: DexPathList[[zip file "/data/app/com.cra.han_bab-5rqLLH6n-NUvOtf0Vbg2Pw==/base.apk"],nativeLibraryDirectories=[/data/app/com.cra.han_bab-5rqLLH6n-NUvOtf0Vbg2Pw==/lib/arm64, /data/app/com.cra.han_bab-5rqLLH6n-NUvOtf0Vbg2Pw==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/AndroidRuntime(10676): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
E/AndroidRuntime(10676): at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(10676): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(10676): at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
E/AndroidRuntime(10676): at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
E/AndroidRuntime(10676): at android.app.Instrumentation.newActivity(Instrumentation.java:1251)
E/AndroidRuntime(10676): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3535)
E/AndroidRuntime(10676): ... 11 more
Wrtn : com.cra.han_bab.MainActivity 클래스를 찾을 수 없어서 충돌하는 문제가 발생
해결방법 <change_app_package_name 라이브러리>
https://pub.dev/packages/change_app_package_name
설치
$ flutter pub add change_app_package_name
사용
$ flutter pub run change_app_package_name:main (새로운 패키지명)
- google-services.json 안에 있는 패키지명은 수동 변경
$ flutter build appbundle