2017-01-23 8 views
1

Недавно я добавил другую зависимость к моему приложению, которая подтолкнула его к пределу 64k и потребовала Multidex. При запуске на Android 4.x приложение теперь происходит сбой при запуске с NoClassDefFoundError:Android 4.x NoClassDefFoundError с полностью реализованным Multidex

FATAL EXCEPTION: main 
Process: org.naturenet.debug, PID: 3136 
java.lang.NoClassDefFoundError: org.naturenet.util.ForestFire 
at org.naturenet.NatureNetApplication.onCreate(NatureNetApplication.java:60) 

Другие случаи этой ошибки предполагают, что это происходит потому, что Multidex не в полном объеме, но это все-таки происходит со всеми следующими изменениями :

приложение файл сборки

dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:support-v4:25.1.0' 
    ... 
} 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "org.naturenet" 
     minSdkVersion 16 
     targetSdkVersion 23 
     multiDexEnabled true 
     jackOptions { 
      enabled true 
      additionalParameters('jack.incremental': 'true') 
     } 
    } 
} 

класс Application

public class NatureNetApplication extends MultiDexApplication { 

Класс ForestFire не изменился. Первоначально у меня были разные реализации под деревьями отладки и выпуска, но замена их одним файлом в основном исходном дереве не имела никакого значения.

+0

Вы пытались очистить и запустить снова ... или отключить мгновенный запуск из настроек? –

+0

Да, я сделал полные перестройки и установил на свежие устройства. Я не использую мгновенный запуск. –

+0

Это может быть дубликат http://stackoverflow.com/q/39841778/213156, но поскольку предлагаемое обходное решение с страницы с ошибкой не работает для меня, я не уверен. –

ответ

1

я была такая же проблема на Android 4. * устройства и это как-то было связано с использованием Джек набора инструментов.

Но Jack was deprecated и Android-студия 2,4 Preview 6 был выпущен:

Java 8 language features are now supported by the Android build system in the javac/dx compilation path. Android Studio's Gradle plugin now desugars Java 8 class files to Java 7-compatible class files, so you can use lambdas, method references and other features of Java 8.

Смотрите this для получения дополнительной информации.

Теперь вы можете установить Android Studio Preview и удалить jackOptions с build.gradle.

0

Попробуйте добавить это в свой манифест, если вы этого не сделали.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.android.multidex.myapplication"> 
<application 
    ... 
    android:name="android.support.multidex.MultiDexApplication"> 
    ... 
</application> 

Для получения дополнительной информации: https://developer.android.com/studio/build/multidex.html?hl=en-419

+0

Проблема возникает в моем пользовательском классе Application, который расширяет MultiDexApplication. Это уже было указано в манифесте. –