【问题标题】:Activity class not found exception找不到活动类异常
【发布时间】:2017-03-11 05:58:24
【问题描述】:

我正在尝试在装有 Android 18 的旧设备上运行一个 android 项目。该项目在 Android >21 上运行良好,但在 Android 18 上我收到以下错误:

03-11 01:22:31.147 2343-2608/?电子/看门狗:!@Sync 466 03-11 01:23:01.152 2343-2608/?电子/看门狗:!@Sync 467 03-11 01:23:16.602 24016-24016/? E/AndroidRuntime: 致命异常: main java.lang.RuntimeException:无法实例化活动 组件信息{com.example/com.example.MainActivity}: java.lang.ClassNotFoundException:找不到类 路径上的“com.example.MainActivity”:/data/app/com.example-1.apk at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 在 android.app.ActivityThread.access$700(ActivityThread.java:159) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5419) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在 dalvik.system.NativeStart.main(Native Method) 原因: java.lang.ClassNotFoundException:找不到类 路径上的“com.example.MainActivity”:/data/app/com.example-1.apk at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:501) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:461) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1078) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 在 android.app.ActivityThread.access$700(ActivityThread.java:159) android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 在 android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5419) 在 java.lang.reflect.Method.invokeNative(Native Method) 位于 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) dalvik.system.NativeStart.main(本机方法)03-11 01:23:17.052 2343-2441/? E/android.os.Debug: !@Dumpstate > sdumpstate -k -t -z -d -o /data/log/dumpstate_app_error 03-11 01:23:23.087 2698-2698/? E/Launcher:错误查找设置,默认可访问性为未找到: 可访问性启用 03-11 01:23:23.147 2343-2441/? E/ViewRootImpl: sendUserActionEvent() mView == null 03-11 01:23:23.162 2343-4810/? E/EnterpriseContainerManager: ContainerPolicy Service 还没有 准备好!!! 03-11 01:23:23.377 24110-24132/? E/Babel: canonicalizeMccMnc: 无效的 mccmnc 03-11 01:23:23.377 24110-24132/?电子/通天塔: canonicalizeMccMnc:无效的 mccmnc nullnull 03-11 01:23:31.152 2343-2608/? E/看门狗:!@Sync 468

我的 Android 清单如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example">
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

为什么找不到主类?如何使应用与 Android 18 兼容?

编辑 1: 我尝试在 MainActivity 中添加 multidex 功能:

public class MainActivity extends AppCompatActivity implements IResults {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
...

在 gradle 中:

apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'

android {
    compileSdkVersion 24
    buildToolsVersion '25.0.0'

    defaultConfig {
        applicationId "com.example"
        minSdkVersion 18
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"

        // Enabling multidex support.
        multiDexEnabled true
    }
...

dependencies {
    // Generic dependencies
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.android.support:design:24.2.0'

    // Support libraries
    compile "com.android.support:appcompat-v7:$supportLibraryVersion"
    compile "com.android.support:design:$supportLibraryVersion"
    compile "com.android.support:cardview-v7:$supportLibraryVersion"
    compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
    compile 'com.android.support:multidex:1.0.1'
...

但仍然没有运气。任何其他想法如何解决这个问题?

【问题讨论】:

  • 添加android:name="com.example.MainActivity clean-rebuild 并运行
  • 所以你没有在 19 或 20 测试?
  • 谢谢,我在将完整的包名添加到 android:name 后尝试重建,但仍然出现同样的错误。还有其他想法如何解决这个@IntelliJAmiya?
  • @cricket_007 不,但这与我的问题无关
  • 你更新你的安卓工作室了吗?

标签: java android android-manifest classnotfoundexception


【解决方案1】:

你必须使用MultidexApplication

<application
        android:name="android.support.multidex.MultiDexApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

或将 MultiDex.install(this); 放入您的 Application 类中

【讨论】:

  • 我重写了应用程序类(参见清单),所以我无法提出您的第一个建议。我有 MultiDex.install(this);在 MainActivity 中(见我的帖子底部),但还是一样。还有其他想法吗?
  • 你的意思是你有你的Application 类?你有没有试过把MultiDex.install(this);放在那个Application中。
  • 该错误没有说明 DexException。为什么需要这个?
  • ok 将它添加到应用程序类解决了它。 @cricket_007 看到 cmets 超过了大约 65k 方法限制
  • @bear 你的问题中没有提到Unable to execute dex: method ID not in [0, 0xffff]: 65536
猜你喜欢
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多