Мультидекс на Asus 5.1
У меня проблема с использованием мультидекса. Работает нормально, но только на ASUS Zenphone MAX with 5.1 Android
при запуске приложения произошла ошибка:
05-17 16: 37: 11.624 11229-11229 / ru.techmas.neeosocial E / AndroidRuntime: FATAL EXCEPTION: main Процесс: ru.techmas.neeosocial, PID: 11229 java.lang.NoClassDefFoundError: Ошибка разрешения: Lrx/subject /PublishSubject; на ru.techmas.neeosocial.utils.RxPush.(RxPush.java:18) на ru.techmas.neeosocial.dagger.modules.AppModule.(AppModule.java:46) на ru.techmas.neeosocial.App.setupDagger2(приложение.java:58) на ru.techmas.neeosocial.App.onCreate(App.java:34) на android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011) на android.app.ActivityThread.handleBindApplication(ActivityThread.java:4559) на android.app.ActivityThread.access$1500(ActivityThread.java:151) на android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346) на android.os.Handler.dispatchMessage(Handler.java:102) на android.os.Looper.loop(Looper.java:135) на android.app.ActivityThread.main(ActivityThread.java:5289) на java.lang.reflect.Method.invoke(собственный метод) на java.lang.reflect.Method.invoke(Method.java:372) в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Вызвано: java.lang.ClassNotFoundException: не нашел классы s "rx.subjects.PublishSubject" по пути: DexPathList[[ZIP-файл "/data/app/ru.techmas.neeosocial-1/base.apk", ZIP-файл "/data/app/ru.techmas.neeosocial-1/split_lib_dependencies_apk.apk ", ZIP-файл" /data/app/ru.techmas.neeosocial-1/split_lib_slice_0_apk.apk ", ZIP-файл" /data/app/ru.techmas.neeosocial-1/split_lib_slapk "_ "/data/app/ru.techmas.neeosocial-1/split_lib_slice_2_apk.apk", zip-файл "/data/app/ru.techmas.neeosocial-1/split_lib_slice_3_apk.apk", zip-файл "/ data / app / ru. techmas.neeosocial-1 / split_lib_slice_4_apk.apk ", ZIP-файл" /data/app/ru.techmas.neeosocial-1/split_lib_slice_5_apk.apk ", ZIP-файл" /data/app/ru.techmas.neeosocial_pl_. apk ", zip-файл" /data/app/ru.techmas.neeosocial-1/split_lib_slice_7_apk.apk ", zip-файл" /data/app/ru.techmas.neeosocial-1/split_lib_slice_8_apk.apk ", zip-файл"/data/app/ru.techmas.neeosocial-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/ru.techmas.neeosocial-1/lib/arm64, /vendor/lib64, /system/lib64]] в dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass(ClassLoader.java:511) в java.lang.ClassLoader.loadClass(ClassLoader.java:469).techmas.neeosocial.utils.RxPush. (RxPush.java:18) в ru.techmas.neeosocial.dagger.modules.AppModule.(AppModule.java:46) в ru.techmas.neeosocial.App.setupDagger2(App.java): 58) на ru.techmas.neeosocial.App.onCreate(App.java:34) на android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011) на android.app.ActivityThread.handleBindApplication (ActivityThread.java:4559) на android.app.ActivityThread.access$1500(ActivityThread.java:151) на android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346) на android.os.Handler.dispatchMessage(Handler.java:102) на android.os.Looper.loop(Looper.java:135) на android.app.ActivityThread.main(ActivityThread.java:5289) на java.lang.reflect.Method.invoke(собственный метод) на java.lang.reflect.Method.invoke(Method.java:372) в com.androi d.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:899) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Подавлено: java.lang.ClassNotFoundException: rx.subjectPject в java.lang.Class.classForName(собственный метод) в java.lang.BootClassLoader.findClass(ClassLoader.java:781) в java.lang.BootClassLoader.loadClass(ClassLoader.java:841) в java.lang.ClassLoader.loadC (ClassLoader.java:504) ... еще 16 причин: java.lang.NoClassDefFoundError: Класс не найден с помощью загрузчика загрузочного класса; стек недоступен 05-17 16:42:11.945 11229-11229/ru.techmas.neeosocial I/ Процесс: отправка сигнала. PID: 11229 SIG: 9 Причина: java.lang.NoClassDefFoundError: Класс не найден с помощью загрузчика загрузочного класса; нет стека
Это происходит, когда я создаю AppModule
(Dagger2
DI), строка rxPush (если поменять местами с restApi, это происходит при создании restApi.
AppModule:
public AppModule(App app) {
this.app = app;
preferenceHelper = new PreferenceHelper(PreferenceManager.getDefaultSharedPreferences(app));
dataChecker = new DataChecker();
geoHelper = new GeoHelper();
animationHelper = new AnimationHelper(app);
user = new UserDTO();
friendPerson = new PersonDTO();
rxPush = new RxPush();
restApi = new RestApi(preferenceHelper, app);
}
Gradle:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-android'
def getStore = { ->
def result = project.hasProperty('storeFile') ? storeFile : "null"
return result
}
def getStorePassword = { ->
def result = project.hasProperty('storePassword') ? storePassword : ""
return result
}
def getKeyAlias = { ->
def result = project.hasProperty('keyAlias') ? keyAlias : ""
return result
}
def getKeyPassword = { ->
def result = project.hasProperty('keyPassword') ? keyPassword : ""
return result
}
android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(
output.outputFile.parent,
output.outputFile.name.replace("app", "${variant.applicationId}-${variant.versionName}"))
}
}
compileSdkVersion = 25
buildToolsVersion = "25.0.2"
defaultConfig {
applicationId "ru.techmas.neeosocial"
minSdkVersion 15
targetSdkVersion 25
versionCode 7
versionName "0.5.3"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
signingConfigs {
release {
storeFile file(getStore())
storePassword getStorePassword()
keyAlias getKeyAlias()
keyPassword getKeyPassword()
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
compile project(':webrtc')
compile fileTree(dir: 'libs', include: ['*.jar'])
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:25.1.0'
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
compile 'com.arello-mobile:moxy:1.4.5'
compile 'com.arello-mobile:moxy-app-compat:1.4.5'
compile 'com.arello-mobile:moxy-android:1.4.5'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
compile 'io.reactivex:rxjava:1.1.5'
compile 'io.reactivex:rxandroid:1.0.1'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:support-v4:25.1.0'
compile 'com.android.support:cardview-v7:25.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.theartofdev.edmodo:android-image-cropper:2.3.1'
compile 'de.hdodenhof:circleimageview:1.3.0'
compile 'com.google.dagger:dagger:2.5'
compile 'org.greenrobot:eventbus:3.0.0'
compile 'com.github.christophesmet:android_maskable_layout:d51245736a'
compile 'jp.wasabeef:blurry:2.1.0'
compile 'com.google.android.gms:play-services-maps:9.0.1'
compile 'com.google.android.gms:play-services-location:9.0.1'
compile 'ru.tinkoff.decoro:decoro:1.3.2'
compile 'com.google.firebase:firebase-messaging:9.0.1'
testCompile 'junit:junit:4.12'
apt 'com.google.dagger:dagger-compiler:2.5'
provided 'com.arello-mobile:moxy-compiler:1.4.5'
provided 'javax.annotation:jsr250-api:1.0'
}
apply plugin: 'com.google.gms.google-services'
Приложение (расширяет WebRtcApp расширяет MultiDexApplication):
public class App extends WebRtcApp {
private static AppComponent appComponent;
//@formatter:off
@Inject DataChecker dataChecker;
//@formatter:on
@Override
public void onCreate() {
super.onCreate();
setupDagger2();
setupDataChecker();
setupFabric();
setupRealm();
}
private void setupRealm() {
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder()
.schemaVersion(Const.RealmScheme.VERSION) // Must be bumped when the schema changes
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(config);
}
private void setupDataChecker() {
dataChecker.setContext(this);
}
private void setupFabric() {
Fabric.with(this, new Crashlytics());
}
private void setupDagger2() {
appComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
appComponent.inject(this);
}
public static AppComponent getAppComponent() {
return appComponent;
}
На других моделях (4,5,6 Android) это работает хорошо. Очистить и восстановить, с перезапуском и аннулированием кэша не помогло
1 ответ
Проблема была с мгновенным пробегом. Я отключаю его и все работает хорошо.