首页 文章

未找到活动类异常

提问于
浏览
-1

我试图在Android 18的旧设备上运行一个Android项目 . 该项目在Android> 21上工作正常,但在Android 18上我收到以下错误:

03-11 01:22:31.147 2343-2608 /? E /看门狗:!@Sync 466 03-11 01:23:01.152 2343-2608 /? E /看门狗:!@Sync 467 03-11 01:23:16.602 24016-24016 /? E / AndroidRuntime:FATAL EXCEPTION:main java.lang.RuntimeException:无法实例化活动ComponentInfo {com.example / com.example.MainActivity}:java.lang.ClassNotFoundException:未找到类“com.example.MainActivity”on android.app.ActivityThread上android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219)上的路径:/data/app/com.example-1.apk .access $ 700(ActivityThread.java:159)在Android.os.Looper.loop的android.app.Handler.dispatchMessage(Handler.java:99)上的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1316) (Looper.java:176)位于java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invokeNative(Native Method)的android.app.ActivityThread.main(ActivityThread.java:5419) :525)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1046)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)at dalvik.system.NativeS tart.main(Native Method)引起:java.lang.ClassNotFoundException:在路径上找不到类“com.example.MainActivity”:/ data / app / com.example-1.apk在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.access $ 700(ActivityThread.java:159)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1316)在android.app.Handler.dispatchMessage(Handler.java:99)android.app.Looper.loop(Looper.java:176)android.app .ActivityThread.main(ActivityThread.java:5419)位于com.android.internal.os的java.lang.reflect.Method.invoke(Method.java:525)的java.lang.reflect.Method.invokeNative(Native Method) .Zyg oteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1046)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)at dalvik.system.NativeStart.main(Native Method)03-11 01:23: 17.052 2343-2441 /? E / android.os.Debug:!@ Rollstate> sdumpstate -k -t -z -d -o / data / log / dumpstate_app_error 03-11 01:23:23.087 2698-2698 /? E / Launcher:找不到设置时出错,找不到默认的可访问性:accessibility_enabled 03-11 01:23:23.147 2343-2441 /? E / ViewRootImpl:sendUserActionEvent()mView == null 03-11 01:23:23.162 2343-4810 /? E / EnterpriseContainerManager:ContainerPolicy服务还没有准备好!!! 03-11 01:23:23.377 24110-24132 /? E / Babel:canonicalizeMccMnc:无效mccmnc 03-11 01:23:23.377 24110-24132 /? E / Babel: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中尝试了addiong 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'
...

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

1 回答

  • 2

    你必须使用 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 课程中

相关问题