java.lang.RuntimeException: 在SDK更新后无法实例化活动ComponentInfo

5
我最近更新了Android 3.2 SDK,导致我的应用程序无法正常运行,立即强制退出并出现“无法实例化活动ComponentInfo”错误。我检查了所有关于此主题的帖子,并且相信我已经涵盖了所有导致此错误的常见问题。我认为它可能与集成的谷歌地图有关,但是在更新之前它可以正常工作。这里是LogCat和清单文件。由于main activity类非常大,因此我想避免发布它。
05-16 14:08:16.313: I/dalvikvm(2880): Failed resolving 

Lcnp/apps/dronecontrol/DroneControlActivity; interface 112 'Lslickdevlabs/apps/usb2seriallib/AdapterConnectionListener;'
05-16 14:08:16.313: W/dalvikvm(2880): Link of class 'Lcnp/apps/dronecontrol/DroneControlActivity;' failed
05-16 14:08:16.313: D/AndroidRuntime(2880): Shutting down VM
05-16 14:08:16.313: W/dalvikvm(2880): threadid=1: thread exiting with uncaught exception (group=0x40239760)
05-16 14:08:16.313: E/AndroidRuntime(2880): FATAL EXCEPTION: main
05-16 14:08:16.313: E/AndroidRuntime(2880): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cnp.apps.dronecontrol/cnp.apps.dronecontrol.DroneControlActivity}: java.lang.ClassNotFoundException: cnp.apps.dronecontrol.DroneControlActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/cnp.apps.dronecontrol-2.apk]
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1739)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.ActivityThread.access$500(ActivityThread.java:122)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.os.Looper.loop(Looper.java:132)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.ActivityThread.main(ActivityThread.java:4123)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at java.lang.reflect.Method.invokeNative(Native Method)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at java.lang.reflect.Method.invoke(Method.java:491)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at dalvik.system.NativeStart.main(Native Method)
05-16 14:08:16.313: E/AndroidRuntime(2880): Caused by: java.lang.ClassNotFoundException: cnp.apps.dronecontrol.DroneControlActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/cnp.apps.dronecontrol-2.apk]
05-16 14:08:16.313: E/AndroidRuntime(2880):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at java.lang.ClassLoader.loadClass(ClassLoader.java:540)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at java.lang.ClassLoader.loadClass(ClassLoader.java:500)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.Instrumentation.newActivity(Instrumentation.java:1022)
05-16 14:08:16.313: E/AndroidRuntime(2880):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1730)
05-16 14:08:16.313: E/AndroidRuntime(2880):     ... 11 more
05-16 14:13:50.023: I/dalvikvm(2918): Failed resolving Lcnp/apps/dronecontrol/DroneControlActivity; interface 112 'Lslickdevlabs/apps/usb2seriallib/AdapterConnectionListener;'
05-16 14:13:50.023: W/dalvikvm(2918): Link of class 'Lcnp/apps/dronecontrol/DroneControlActivity;' failed
05-16 14:13:50.023: D/AndroidRuntime(2918): Shutting down VM
05-16 14:13:50.023: W/dalvikvm(2918): threadid=1: thread exiting with uncaught exception (group=0x40239760)
05-16 14:13:50.023: E/AndroidRuntime(2918): FATAL EXCEPTION: main
05-16 14:13:50.023: E/AndroidRuntime(2918): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cnp.apps.dronecontrol/cnp.apps.dronecontrol.DroneControlActivity}: java.lang.ClassNotFoundException: cnp.apps.dronecontrol.DroneControlActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/cnp.apps.dronecontrol-1.apk]
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1739)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.ActivityThread.access$500(ActivityThread.java:122)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.os.Looper.loop(Looper.java:132)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.ActivityThread.main(ActivityThread.java:4123)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at java.lang.reflect.Method.invokeNative(Native Method)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at java.lang.reflect.Method.invoke(Method.java:491)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at dalvik.system.NativeStart.main(Native Method)
05-16 14:13:50.023: E/AndroidRuntime(2918): Caused by: java.lang.ClassNotFoundException: cnp.apps.dronecontrol.DroneControlActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/cnp.apps.dronecontrol-1.apk]
05-16 14:13:50.023: E/AndroidRuntime(2918):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at java.lang.ClassLoader.loadClass(ClassLoader.java:540)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at java.lang.ClassLoader.loadClass(ClassLoader.java:500)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.Instrumentation.newActivity(Instrumentation.java:1022)
05-16 14:13:50.023: E/AndroidRuntime(2918):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1730)
05-16 14:13:50.023: E/AndroidRuntime(2918):     ... 11 more

这是清单文件,我觉得错误就在这里,更新SDK后我没有更改任何代码,它突然开始崩溃了。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cnp.apps.dronecontrol"
    android:versionCode="7"
      android:versionName="1.6">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-sdk android:minSdkVersion="13" />
    <uses-feature android:name="android.hardware.usb.host" android:required="true"></uses-feature>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="com.google.android.maps" />
        <activity android:name=".DroneControlActivity"
                  android:windowSoftInputMode="adjustPan|stateHidden"
                  android:label="@string/app_name"
                  android:launchMode="singleTask" android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            </intent-filter>

            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />
        </activity>
        <activity android:name=".MenuHelper"
                  android:label="@string/app_name" />

    </application>
</manifest>
1个回答

9
可怕的ClassNotFoundException。您需要将第三方库放入“libs”文件夹中并重新引用它们(右键单击,属性,Java Build Path,Libraries,Add Jar...)。

哇,这解决了问题,非常感谢你,我从来没有想过尝试那个方法,你能解释一下为什么在更新之前它有效而在更新后无效吗? - user1399328
@user1399328 是因为 Proguard 版本的原因。 - Akram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接