没有找到路径.MyApp类:DexPathList。只有APK直接运行调试

Ale*_*ost 5 java android android-studio

我搜索周围的解决方案,有几个相关的ClassNotFoundException线程这样的SO。但我想只要有解决方案,并没有任何帮助。因此,以我为例,当直接从Android Studio将应用程序部署到设备时,它可以正常运行,尽管从file:安装时会崩溃adb install app-debug.apk

03-08 16:45:59.303 32233-32233/us.kostenko.glagol.debug E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: us.kostenko.glagol.debug, PID: 32233
                                                                          java.lang.RuntimeException: Unable to instantiate application us.kostenko.glagol.di.application.MyApp: java.lang.ClassNotFoundException: Didn't find class "us.kostenko.glagol.di.application.MyApp" on path: DexPathList[[zip file "/data/app/us.kostenko.glagol.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/us.kostenko.glagol.debug-1/lib/arm64, /vendor/lib64, /system/lib64]]
                                                                              at android.app.LoadedApk.makeApplication(LoadedApk.java:565)
                                                                              at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4561)
                                                                              at android.app.ActivityThread.access$1500(ActivityThread.java:154)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:135)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5298)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:372)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:708)
                                                                           Caused by: java.lang.ClassNotFoundException: Didn't find class "us.kostenko.glagol.di.application.MyApp" on path: DexPathList[[zip file "/data/app/us.kostenko.glagol.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/us.kostenko.glagol.debug-1/lib/arm64, /vendor/lib64, /system/lib64]]
                                                                              at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                              at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                                              at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                                              at android.app.Instrumentation.newApplication(Instrumentation.java:980)
                                                                              at android.app.LoadedApk.makeApplication(LoadedApk.java:560)
                                                                              at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4561) 
                                                                              at android.app.ActivityThread.access$1500(ActivityThread.java:154) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:135) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5298) 
                                                                              at java.lang.reflect.Method.invoke(Native Method) 
                                                                              at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:708) 
                                                                            Suppressed: java.lang.ClassNotFoundException: us.kostenko.glagol.di.application.MyApp
                                                                              at java.lang.Class.classForName(Native Method)
                                                                              at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                                              at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                                                              at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                                                    ... 13 more
                                                                           Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="us.kostenko.glagol">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<!-- For download manager -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
    android:name=".di.application.MyApp"
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label=""
        android:theme="@style/AppTheme.NoActionBar"
        android:screenOrientation="portrait"
        android:launchMode="singleTop">
    </activity>
    <activity
        android:name=".personal.SignInActivity"
        android:label="@string/title_activity_sign_in"
        android:theme="@style/AppTheme.NoActionBar"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".payment.PaymentActivity"
        android:label="@string/title_activity_payment"
        android:theme="@style/AppTheme.NoActionBar"
        android:screenOrientation="portrait">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>
    <service
        android:name=".catalog.service.BookFilesService"
        android:exported="false"
        android:description="@string/about_detail_book_service"/>
    <service
        android:name=".player.PlayerService"
        android:exported="false"
        android:description="@string/about_play_book_service"/>
</application>
Run Code Online (Sandbox Code Playgroud)

和build.gradle:

    apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def superpowered_sdk_path = properties.getProperty('superpowered.dir')

android {
    signingConfigs {
        config {
           ...
        }
    }
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion
    defaultConfig {
        applicationId "us.kostenko.glagol"
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            // these platforms cover 99% percent of all Android devices
        }

        externalNativeBuild {
            cmake {
                arguments '-DANDROID_PLATFORM=android-16', '-DANDROID_TOOLCHAIN=clang', '-DANDROID_ARM_NEON=TRUE', '-DANDROID_STL=gnustl_static', "-DPATH_TO_SUPERPOWERED:STRING=${superpowered_sdk_path}"
                cFlags '-O3', '-fsigned-char' // full optimization, char data type is signed
                cppFlags '-fsigned-char', "-I${superpowered_sdk_path}"
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            applicationIdSuffix ".debug"
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
        main {
            jniLibs.srcDirs = ['src/main/jni']
        }
    }
    externalNativeBuild {
        cmake {
            path 'src/main/jni/CMakeLists.txt'
        }
    }
}

kapt {
    generateStubs = true
}

repositories {
//    maven { url 'https://github.com/linchaolong/stetho-realm/raw/master/maven-repo' }
    mavenCentral()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion"
    compile "com.android.support:design:$rootProject.ext.supportLibraryVersion"
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'


    testCompile 'junit:junit:4.12'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    /* Rx - reactive extensions
                https://github.com/ReactiveX/RxAndroid */
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'io.reactivex:rxjava:1.1.6'
    /* Retrofit - networking
                * http://square.github.io/retrofit/ */
    compile "com.squareup.retrofit2:retrofit:$rootProject.ext.retrofit2Version"
    compile "com.squareup.retrofit2:converter-gson:$rootProject.ext.retrofit2Version"
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
    /* Gson - json parsing
                * https://github.com/google/gson */
    compile 'com.google.code.gson:gson:2.7'
    /* OkHttp3 - http client
                * http://square.github.io/okhttp/ */
    compile "com.squareup.okhttp3:okhttp:$rootProject.ext.okhttpVersion"
    compile "com.squareup.okhttp3:logging-interceptor:$rootProject.ext.okhttpVersion"
    /* Dagger 2 - DI
                https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2*/
    compile 'com.google.dagger:dagger:2.8'
    kapt "com.google.dagger:dagger-compiler:2.4"
    provided 'org.glassfish:javax.annotation:10.0-b28'

    /* Glide - image loading lib
                 https://github.com/bumptech/glide */
    compile 'com.github.bumptech.glide:glide:3.7.0'integration:1.4.0@aar'
    compile "com.android.support:support-v4:$rootProject.ext.supportLibraryVersion"
    /* Realm */
    compile 'io.realm:android-adapters:1.3.0'

    compile 'de.cketti.mailto:email-intent-builder:1.0.0'
    compile 'com.roughike:bottom-bar:2.1.1'
}
repositories {
    mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)

我的项目中确实有该类MyApp。该日志对我来说并不清楚。在将Android Studio更新为2.3并更新了项目中的某些依赖项之后,我注意到了这个问题。之前,它工作得很好。

对于解决此问题的任何帮助,我将不胜感激。

编辑: 经过一些试验,我发现我创建构建的方式有所不同。如果我使用“构建/构建APK”构建项目,adb install app-debug.apk则不会引发异常。但是每次我使用运行/运行'app'选项将应用程序部署到设备上时,通过终端安装以这种方式创建的apk都会导致崩溃,并提到异常。它是预期的行为还是错误?

同样值得注意的是,“构建/清理”项目已解决了下一个构建的问题。

Ale*_*ost 2

这是一种有意的行为。如果启用即时运行功能,AS 将构建一种特殊类型的 apk,仅包含最近的更改。因此,为了构建一个能够使用adb install app-debug.apk命令运行的 apk,应该构建一个带有Build/Build APK.