应用程序的ClassNotFoundException(尝试过所有内容)

时间:2014-09-16 19:03:29

标签: java android android-build

我遇到了一个可悲的似乎是Android的常见问题:启动时ClassNotFoundException为应用程序类。我已经尝试了所有的东西(包括声称已尝试过所有内容的其他已接受的答案)。这仅在我导出已签名的APK时发生;使用调试器就好了。让我适合的是它不是由其他人的问题引起的。以下是正确的:

  1. 我使用'libs'而不是'lib'。
  2. 我的清单中的包路径是正确的(粘贴在下面进行仔细检查)。
  3. 虽然我有外部项目引用,但它们并不是未能找到的。如果你认为它可能是原因让我知道,但它没有找到实际项目的简单应用程序,而不是引用的任何东西。
  4. 这个问题也很短暂。有时候第一次创建“有效”的APK,而其他时候需要10次以上的重新排序构建/导出选项卡,删除/ bin等等。我应该注意到它实际上并不重要。 /导出是,只有我改变它。但这太荒谬了 - 我没有时间每次构建都这样做。

    这是堆栈跟踪(注意:我必须将所有内容的名称清理为“公司”):

    E/AndroidRuntime(17678): FATAL EXCEPTION: main
    E/AndroidRuntime(17678): Process: com.company.page, PID: 17678
    E/AndroidRuntime(17678): java.lang.RuntimeException: Unable to instantiate application com.company.page.MyApplication:
     java.lang.ClassNotFoundException: Didn't find class "com.company.page.MyApplication" on path: DexPathList[[zip file "
    /data/app/com.company.page-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.company.page-1, /vendor/lib, /system/
    lib]]
    E/AndroidRuntime(17678):        at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
    E/AndroidRuntime(17678):        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4301)
    E/AndroidRuntime(17678):        at android.app.ActivityThread.access$1500(ActivityThread.java:135)
    E/AndroidRuntime(17678):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    E/AndroidRuntime(17678):        at android.os.Handler.dispatchMessage(Handler.java:102)
    E/AndroidRuntime(17678):        at android.os.Looper.loop(Looper.java:136)
    E/AndroidRuntime(17678):        at android.app.ActivityThread.main(ActivityThread.java:5001)
    E/AndroidRuntime(17678):        at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime(17678):        at java.lang.reflect.Method.invoke(Method.java:515)
    E/AndroidRuntime(17678):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    E/AndroidRuntime(17678):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    E/AndroidRuntime(17678):        at dalvik.system.NativeStart.main(Native Method)
    E/AndroidRuntime(17678): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.company.page.MyApplicatio
    n" on path: DexPathList[[zip file "/data/app/com.company.page-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.comp
    any.page-1, /vendor/lib, /system/lib]]
    E/AndroidRuntime(17678):        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    E/AndroidRuntime(17678):        at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    E/AndroidRuntime(17678):        at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    E/AndroidRuntime(17678):        at android.app.Instrumentation.newApplication(Instrumentation.java:975)
    E/AndroidRuntime(17678):        at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
    E/AndroidRuntime(17678):        ... 11 more
    

    这是我的申请。我有一个更复杂的,但我想简化一些事情。可悲的是,它没有帮助。

    package com.company.page;
    
    import android.app.Application;
    
    public class MyApplication extends Application
    {
    
    }
    

    这是我的清单:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.company.page"
        android:versionCode="1"
        android:versionName="0.01" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="18" />
    
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.BROADCAST_STICKY" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
    
        <application
            android:name="com.company.page.MyApplication"
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
    
            <service android:name="com.aylanetworks.aaml.AylaExecuteRequest" >
            </service>
    
            <activity
                android:name="com.company.page.ui.MainActivity"
                android:label="@string/app_name"
                android:screenOrientation="landscape"
                android:windowSoftInputMode="stateHidden" >
            </activity>
    
            <activity
                android:name="com.company.page.ui.InitActivity"
                android:label="@string/app_name"
                android:noHistory="true"
                android:screenOrientation="landscape"
                android:windowSoftInputMode="stateHidden" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

    这是我的订单和导出标签: enter image description here

    必须有一个真正的解决方案。有人解决了吗?

0 个答案:

没有答案