Gradle: 3.0.1 Build APK (s) собирает apk с NoClassDefFoundError

градиент:

classpath 'com.android.tools.build:gradle:3.0.1'

Я делаю:

  1. Мгновенный запуск отключен

  2. Сборка->Очистить проект

  3. Сборка->Сборка APK(ов)

  4. adb установить приложение-debug.apk

  5. Запустить приложение

Ошибка в журнале:

 FATAL EXCEPTION: main
Process: com.example, PID: 23753
java.lang.RuntimeException: Unable to instantiate application com.example.TheApplication: java.lang.ClassNotFoundException: Didn't find class "com.example.TheApplication" on path: DexPathList[[zip file "/data/app/com.example-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example-1/lib/arm, /data/app/com.example-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:676)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6289)
at android.app.ActivityThread.access$1800(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1860)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.TheApplication" on path: DexPathList[[zip file "/data/app/com.example-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example-1/lib/arm, /data/app/com.example-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
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:1004)
at android.app.LoadedApk.makeApplication(LoadedApk.java:666)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6289)
at android.app.ActivityThread.access$1800(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1860)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Suppressed: java.lang.ClassNotFoundException: com.example.TheApplication
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)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

person NickUnuchek    schedule 22.01.2018    source источник
comment
Ваш мгновенный запуск включен или отключен? а также можете ли вы опубликовать свой файл gradle?   -  person Umair    schedule 22.01.2018
comment
Возможный ответ stackoverflow.com/a/43109746/2298357   -  person Pankaj Kant Patel    schedule 22.01.2018
comment
Как сказал @Umair, не могли бы вы предоставить свой файл Gradle, пожалуйста?   -  person xarlymg89    schedule 22.01.2018
comment
@PankajKantPatel, спасибо   -  person NickUnuchek    schedule 22.01.2018
comment
Обычно это происходит, когда конфигурация multidex неверна. Вам нужно проверить, как вы настраиваете файл multidex.   -  person ישו אוהב אותך    schedule 22.01.2018


Ответы (2)


Перейдите в Файл->Настройка->Мгновенный запуск, снимите флажок «Запуск экземпляра» -> Нажмите «Применить» Удалить папку сборки, очистить и перестроить проект

После этого моя проблема решена

person sushant gosavi    schedule 22.01.2018

Когда я столкнулся с подобной ошибкой, я обнаружил, что мой отсутствующий класс находится в другом файле dex.

Я просто добавил файл multidex-config.pro (замените "com.sample.package" на свой пакет)

-keep class com.sample.package.** { *; }

и добавил multiDexKeepProguard в мой build.gradle

buildTypes {
        debug {
            multiDexKeepProguard(new File("multidex-config.pro"))
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
        }

        release {
            multiDexKeepProguard(new File("multidex-config.pro"))
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

когда apk-файл gradle build, он упаковывает классы в один файл dex

Надеюсь, поможет

person DanikX    schedule 22.01.2018