Пустой экран с мультидексом в андроиде 4.0.3
У меня есть приложение, которое поддерживает версию Android от 4.0.3 до 6.0, и оно достигло общего количества разрешенных методов в приложении, и это заставило меня включить функцию мультидекса.
В приложении есть поддержка смахивания, чтобы отключить функцию, и я использовал компонент с именем EnhancedListView. Эта библиотека вызывала несколько проблем, и я заменил ее на RecyclerView.
После этого устройство (Dolphing black - android 4.0.3) перестало работать. Когда я запускаю приложение, я получаю белый экран, за которым следуют ANR и сообщение в журнале, информирующее, что VM 1.6 не поддерживает multidex.
Я подтвердил в оболочке Android, что это устройство работает под VM 1.6, как показано на рисунке ниже:
Но эта информация противоречива, поскольку до замены EnhancedListView на RecyclerView multidex работал.
Ниже следует logcat, отображаемый после запуска приложения
02-02 15:42:48.375 15011-15011/? D/dalvikvm: Late-enabling CheckJNI
02-02 15:42:48.648 15011-15011/my_package I/MultiDex: VM with version 1.6.0 does not have multidex support
02-02 15:42:48.648 15011-15011/my_package I/MultiDex: install
02-02 15:42:48.656 15011-15011/my_package I/MultiDex: MultiDexExtractor.load
02-02 15:42:48.679 15011-15011/my_package I/MultiDex: Detected that extraction must be performed.
02-02 15:42:48.750 15011-15012/my_package D/dalvikvm: GC_CONCURRENT freed 225K, 4% free 9369K/9671K, paused 5ms+5ms
02-02 15:42:48.781 15011-15011/my_package I/MultiDex: Extraction is needed for file /data/data/my_package/code_cache/secondary-dexes/pkg.apk.classes2.zip
02-02 15:42:48.781 15011-15011/my_package I/MultiDex: Extracting /data/data/my_package/code_cache/secondary-dexes/pkg.apk.classes495678859.zip
02-02 15:42:49.523 15011-15011/my_package I/MultiDex: Renaming to /data/data/my_package/code_cache/secondary-dexes/pkg.apk.classes2.zip
02-02 15:42:49.523 15011-15011/my_package I/MultiDex: Extraction success - length /data/data/my_package/code_cache/secondary-dexes/pkg.apk.classes2.zip: 367576
02-02 15:42:49.531 15011-15011/my_package I/MultiDex: load found 1 secondary dex files
02-02 15:42:49.531 15011-15011/my_package I/MultiDex: install done
02-02 15:42:49.531 15011-15011/my_package I/MultiDex: install
02-02 15:42:49.648 15011-15011/my_package D/AndroidRuntime: Shutting down VM
02-02 15:42:49.648 15011-15011/my_package W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x40a331f8)
02-02 15:42:49.656 15011-15011/my_package E/info: java.io.PrintWriter@413d2ea0
И вот мой файл Gradle:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
jcenter()
mavenCentral()
}
dependencies {
classpath 'io.fabric.tools:gradle:1.19.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
jcenter()
mavenCentral()
}
Properties props = new Properties()
props.load(new FileInputStream(file('signing.properties')))
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
delete('src/main/res/values/com_crashlytics_export_strings.xml')
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
defaultConfig {
applicationId "my_package"
minSdkVersion 15
targetSdkVersion 23
// Enabling multidex support.
multiDexEnabled true
}
flavorDimensions "type", "environment"
dexOptions {
javaMaxHeapSize "5g"
incremental true
preDexLibraries false
}
lintOptions {
abortOnError false
}
signingConfigs {
release {
storeFile file("../../MyAppQA.keystore")
storePassword props['signing.release.storePassword']
keyAlias props['signing.release.keyAlias']
keyPassword props['signing.release.keyPassword']
}
}
productFlavors {
...
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
}
}
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.google.android.gms:play-services-location:6.5.87'
compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
transitive = true;
}
compile 'com.android.support:multidex:1.0.1'
}
PS: замена EnhancedListView на RecyclerView была всего лишь подсказкой, но основной упор здесь делается на поддержку мультидекса.
Кто-нибудь может мне помочь с этим?
С Уважением,