簡體   English   中英

Android 4.4(Kitkat)上的Ionic3 MainActivity ClassNotFoundException

[英]Ionic3 MainActivity ClassNotFoundException on Android 4.4 (Kitkat)

我有一個使用Ionic 3和Cordova-Android 6.4.0的應用程序。 該應用在Android API級別> 19(Kitkat)上運行良好。 但是在Android 4.4上運行應用程序會導致應用程序在啟動時崩潰,但會出現以下異常:

03-21 14:07:40.513 2408-2408/com.xxx.app.xxx E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.xxx.app.xxx, PID: 2408
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.xxx.app.xxx/com.xxx.app.xxx.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.xxx.app.xxx.MainActivity" on path: DexPathList[[zip file "/data/app/com.xxx.app.xxx-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.xxx.app.xxx-2, /system/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xxx.app.xxx.MainActivity" on path: DexPathList[[zip file "/data/app/com.xxx.app.xxx-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.xxx.app.xxx-2, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5017) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
        at dalvik.system.NativeStart.main(Native Method) 

我已經閱讀了有關multidex修復程序的內容,但我無法將其應用於我的Ionic應用程序,因為我無法更改生成的Java代碼以添加MultiDex.install(this);

有人有解決方案嗎?

這里描述問題和解決方案。

java.lang.ClassNotFoundException來自應用程序及其庫超過65,536個方法的事實,因此Java類在應用程序的APK中分布在多個DE​​X文件(Dalvik EXecutable)中,即classes.dex,classes2 .dex等。啟動應用程序所需的Java類可能最終出現在app的APK中的classes2.dex中(而不是classes.dex),然后Dalvik運行時不能在小於5的Android版本中加載它們。 Android網站:

在為多索引應用程序構建每個DEX文件時,構建工具執行復雜的決策,以確定主DEX文件中需要哪些類,以便您的應用程序可以成功啟動。 如果在主DEX文件中未提供啟動期間所需的任何類,則您的應用程序將崩潰並顯示錯誤java.lang.NoClassDefFoundError。

解決方案是在文本文件中標識app啟動時引用的每個類,如我帖子開頭的鏈接中所述。

但是,所需類的列表很長且很難建立。 我得到了下面的類,但還有更多的啟動類可供發現。 我的解決方案是說“抱歉,此應用僅適用於Android 5及更高版本”。

com/mycompany/app/myapp/MainActivity.class
org/apache/cordova/CallbackMap.class
org/apache/cordova/ConfigXmlParser.class
org/apache/cordova/CordovaActivity$1.class
org/apache/cordova/CordovaActivity.class
org/apache/cordova/CordovaInterface.class
org/apache/cordova/CordovaInterfaceImpl.class
org/apache/cordova/CordovaPreferences.class
org/apache/cordova/CordovaWebViewEngine.class
org/apache/cordova/engine/SystemWebViewEngine.class
org/apache/cordova/LOG.class
org/apache/cordova/PluginEntry.class
org/json/JSONException.class
org/json/JSONObject.class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM