Мультидекс тестирование инструментов в библиотеке Android - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть библиотека Android, где есть база данных комнат. При добавлении модульных тестов на DAO я превысил предел dex. Запустив тесты приборов, я получаю

FATAL EXCEPTION: main
Process: com.a.b.test, PID: 6725
java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{com.a.b.test/androidx.test.runner.AndroidJUnitRunner}: java.lang.ClassNotFoundException: Didn't find class "androidx.test.runner.AndroidJUnitRunner" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.a.b.test-2/base.apk"],nativeLibraryDirectories=[/data/app/com.a.b.test-2/lib/arm64, /system/lib64, /vendor/lib64]]
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5815)
    at android.app.ActivityThread.-wrap3(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6682)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.test.runner.AndroidJUnitRunner" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/a.b.test-2/base.apk"],nativeLibraryDirectories=[/data/app/com.a.b.test-2/lib/arm64, /system/lib64, /vendor/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5813)

это библиотека библиотеки:

apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion android_sdk_versions.compile
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28

        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        versionCode 1
        versionName "1.0.0"

        consumerProguardFiles 'proguard-lib-rules.txt'
        defaultPublishConfig "release"
    }
    buildTypes {
        debug {
            minifyEnabled false
        }

        release {
            minifyEnabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

dependencies {
    implementation ....
    implementation ....
    implementation ....

    androidTestImplementation 'androidx.multidex:multidex-instrumentation:2.0.0'
    androidTestImplementation 'junit:junit:4.12'
    androidTestImplementation "androidx.test.ext:junit:1.1.0"
    androidTestImplementation "androidx.room:room-testing:2.1.0-alpha06"
}

task sourceJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier "source"
}

publishing {
    publications {
        msdk(MavenPublication) {
            //stuff
        }
    }
    repositories {
        maven {
            url "${System.env.HOME}/.m2/repository"
        }
    }
}

как я могу запустить свои контрольно-измерительные приборы в этой библиотеке? Сама библиотека не превышает лимит dex, также учитывая, что публикация оптимизирована через proguard.

...