0

4.0.3 から 6.0 までの Android バージョンをサポートするアプリケーションがあり、アプリケーションで許可されているメソッドの総数に達したため、multidex 機能を有効にする必要がありました。

アプリケーションはスワイプして閉じる機能をサポートしており、私は EnhancedListView という名前のコンポーネントを使用していました。このライブラリはいくつかの問題を引き起こしていたため、RecyclerView に置き換えました。

その後、デバイス (Dolphing black - android 4.0.3) が機能しなくなりました。アプリケーションを実行すると、白い画面に続いて ANR が表示され、VM 1.6 が multidex をサポートしていないことを知らせるログ メッセージが表示されます。

下の画像に示すように、このデバイスが VM 1.6 で実行されていることを Android シェルで確認しました。 ここに画像の説明を入力

しかし、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 に置き換えることはヒントにすぎませんが、ここでの主な焦点はマルチデックスのサポートです。

誰でもそれを手伝ってもらえますか?
よろしく、

4

0 に答える 0