AndroidX Build Fails в режиме выпуска в отношении appComponentFactory

Я использую Android P и компилирую против AndroidX. Отлично работает в debug/beta, но когда я делаю выпуск, я получаю критический крах во время выполнения:

2018-06-24 00: 21: 26.080 11971-11971/? E/LoadedApk: не удалось создать экземпляр appComponentFactory java.lang.ClassNotFoundException: не нашел класс "androidx.core.app.CoreComponentFactory" по пути: DexPathList [[zip файл]/data/app/app.itsyour.elegantstocks-EuVZWdDgzplhm0Hpa90VwA= =/base.apk "], nativeLibraryDirectories = [/data/app/app.itsyour.elegantstocks-EuVZWdDgzplhm0Hpa90VwA ==/lib/x86,/system/lib]] в dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126 ) в java.lang.ClassLoader.loadClass(ClassLoader.java:379) в java.lang.ClassLoader.loadClass(ClassLoader.java:312) на android.app.LoadedApk.createAppFactory(LoadedApk.java:226) на android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:731) в android.app.LoadedApk.getClassLoader(LoadedApk.java:772) в android.app.LoadedApk.getResources(LoadedApk.java:994) в android.app.ContextImpl.createAppContext( ContextImpl.java:2345) в android.app.ActivityThread.handleBindApplication(ActivityThread.java:5736) в android.app.ActivityThread.access $ 1000 (Activ ityThread.java:197) на android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1634) на android.os.Handler.dispatchMessage(Handler.java:106) на android.os.Looper.loop(Looper.java: 193) в android.app.ActivityThread.main(ActivityThread.java:6642) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java: 493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 2018-06-24 00: 21: 26.145 1667-1854/? E/SurfaceFlinger: ro.sf.lcd_density должно быть определено как свойство построения 2018-06-24 00: 21: 26.233 1667-1703/? E/SurfaceFlinger: ro.sf.lcd_density должно быть определено как свойство построения 2018-06-24 00: 21: 29.627 1796-1913/? E/TaskPersister: Ошибка доступа к файлам с реестром (каталог не существует?). 2018-06-24 00: 21: 30.087 11971-11971/? E/AndroidRuntime: FATAL EXCEPTION: main Процесс: app.itsyour.elegantstocks, PID: 11971 java.lang.IllegalArgumentException: параметр, указанный как не-null, имеет значение null: метод cdbhb, параметр $ receiver в app.itsyour.elegantstocks.aba (Неизвестно Источник: 2) at app.itsyour.elegantstocks.feature.navigator.ba $ aa (Неизвестный источник: 24) at app.itsyour.elegantstocks.feature.navigator.baa (Неизвестный источник: 13) at app.itsyour.elegantstocks.feature.navigator.baa (Неизвестный источник: 2) в androidx.recyclerview.widget.RecyclerView $ aa (Неизвестный источник: 0) в androidx.recyclerview.widget.RecyclerView $ ab (Неизвестный источник: 29) в androidx.recyclerview.widget.RecyclerView $ pa (Неизвестный источник: 39) в androidx.recyclerview.widget.RecyclerView $ pa (Неизвестный источник: 510) в androidx.recyclerview.widget.RecyclerView $ pa (Неизвестный источник: 5) в androidx.recyclerview.widget.RecyclerView $ pc (Неизвестный источник: 1) в androidx.recyclerview.widget.LinearLayoutManager $ ca (Неизвестный источник: 11) в androidx.recyclerview.widget.LinearLayoutManager.a (Неизвестный кислый ce: 0) at androidx.recyclerview.widget.LinearLayoutManager.a (Неизвестный источник: 44) в androidx.recyclerview.widget.LinearLayoutManager.c (Неизвестный источник: 371) в androidx.recyclerview.widget.RecyclerView.O (Неизвестный источник: 42) в файле androidx.recyclerview.widget.RecyclerView.q (Неизвестный источник: 41) в файле androidx.recyclerview.widget.RecyclerView.onLayout (Неизвестный источник: 5) в android.view.View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java:6194) в файле android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) на android.widget.FrameLayout.onLayout(FrameLayout.java:261) на android.view.View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java:6194) в файле androidx.constraintlayout.widget.ConstraintLayout.onLayout (Неизвестный источник: 66) в android.view.View.layout(View.java: 20670) на android.view.ViewGroup.layout(ViewGroup.java:6194) на android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) на android.widget.FrameLayout.onLayout(FrameLayout.java:261) в андрои d.view.View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java:6194) в файле androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout (Неизвестный источник: 60) в android.view. View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java:6194) в файле androidx.coordinatorlayout.widget.CoordinatorLayout.d (Неизвестный источник: 143) в файле androidx.coordinatorlayout.widget.CoordinatorLayout. a (Неизвестный источник: 32) в androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout (Неизвестный источник: 48) в android.view.View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java: 6194) на android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) на android.widget.FrameLayout.onLayout(FrameLayout.java:261) на android.view.View.layout(View.java:20670) на android.view.ViewGroup.layout(ViewGroup.java:6194) в файле android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) на android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) на android.widget.LinearL ayout.onLayout(LinearLayout.java:1565) в android.view.View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java:6194) в файле android.widget.FrameLayout.layoutChildren(FrameLayout.java: 323) на android.widget.FrameLayout.onLayout(FrameLayout.java:261) на android.view.View.layout(View.java:20670) на android.view.ViewGroup.layout(ViewGroup.java:6194) на android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812) на android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656) на android.widget.LinearLayout.onLayout(LinearLayout.java:1565) на android.view. View.layout(View.java:20670) в android.view.ViewGroup.layout(ViewGroup.java:6194) в файле android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) в файле android.widget.FrameLayout.onLayout(FrameLayout.java: 261) at com.android.internal.policy.DecorView.onLayout(DecorView.java:753) на android.view.View.layout(View.java:20670) 2018-06-24 00: 21: 30.087 11971 -11971/? E/AndroidRuntime: на android.view.ViewGroup.layout(ViewGroup.java:6194) на android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2767) на android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2294) на android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1447) в android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:7130) на android.view.Choreographer $ CallbackRecord.run(Choreographer.java:935) в android (Хореограф.ява: 747) на android.view.Choreographer.doFrame (Хореограф.ява:682) на андроиде.Ру. Хореограф $ FrameDisplayEventReceiver.run (Хореограф.java:921) на android.os. Handler.handleCallback(Handler.java:873) на android.os.Handler.dispatchMessage(Handler.java:99) на android.os.Looper.loop(Looper.java:193) на android.app.ActivityThread.main(ActivityThread.java: 6642) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493) на com.android.i nternal.os.ZygoteInit.main(ZygoteInit.java:858) 2018-06-24 00: 21: 30.137 1796-1880/? E/InputDispatcher: канал '5896582 app.itsyour.elegantstocks/app.itsyour.elegantstocks.feature.navigator.NavigatorActivity(server)' ~ Канал невосстановимо сломан и будет утилизирован! 2018-06-24 00: 21: 30.253 5198-9377/? E/EntrySyncManager: не удается определить имя учетной записи: запрос на отправку 2018-06-24 00: 21: 30.253 5198-9377/? E/NowController: Не удалось получить доступ к данным из EntryProvider. ExecutionException. java.util.concurrent.ExecutionException: com.google.android.apps.gsa.sidekick.main.hn: Не удалось выполнить запланированный запрос для обновления записей. ClientErrorCode: 3 на com.google.common.util.concurrent.d.eA(SourceFile: 85) на com.google.common.util.concurrent.d.get(SourceFile: 23) на com.google.common.util. concurrent.l.get(SourceFile: 2) в com.google.android.apps.gsa.staticplugins.nowstream.babe.caI(SourceFile: 47) на com.google.android.apps.gsa.staticplugins.nowstream.babe. caH (SourceFile: 176) в com.google.android.apps.gsa.staticplugins.nowstream.babh.run (Неизвестный источник: 2) в com.google.android.apps.gsa.shared.util.concurrent.at.run(SourceFile: 4) в java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:458) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:458) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в com.google.android.apps.gsa.shared.util.concurrent.bgrun (Неизвестный источник: 4 ) на com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile: 4) на com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(Sourc eFile: 4) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) в java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:641) в java.lang.Thread.run(Thread.java: 764) at com.google.android.apps.gsa.shared.util.concurrent.birun(SourceFile: 6) Вызвано: com.google.android.apps.gsa.sidekick.main.hn: Не удалось выполнить запланированный запрос для обновления записей. ClientErrorCode: 3 в com.google.android.apps.gsa.staticplugins.nowstream.baaq.az (Неизвестный источник: 4) на com.google.common.util.concurrent.q.ap(SourceFile: 7) в com.google.common.util.concurrent.p.run(SourceFile: 32) в com.google.common.util.concurrent.bt.execute(SourceFile: 3) на com.google.common.util.concurrent.db(SourceFile: 275 ) в com.google.common.util.concurrent.d.addListener(SourceFile: 135) в com.google.common.util.concurrent.pb(SourceFile: 3) в com.google.android.apps.gsa.shared. util.concurrent.ha(SourceFile: 16) на com.google.android.apps.gsa.shared.util.concurrent.ha(SourceFile: 13) на com.google.android.apps.gsa.staticplugins.nowstream.babe. caI (SourceFile: 45) на com.google.android.apps.gsa.staticplugins.nowstream.babe.caH(SourceFile: 176) на com.google.android.apps.gsa.staticplugins.nowstream.babh.run (Неизвестный источник: 2) в com.google.android.apps.gsa.shared.util.concurrent.at.run(SourceFile: 4) в java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:458) в java. Util .concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:458) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в com.google.android.apps.gsa.shared.util.concurrent.bgrun (Неизвестный источник: 4) в com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile: 4) на com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile: 4) на java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) на java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:641) в java.lang.Thread.run(Thread.java:764) в com.google.android.apps.gsa.shared.util.concurrent.birun(SourceFile: 6 )

Мои файлы градиента. Проектная градация:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

ext {
    androidXVersion = '1.0.0-alpha3'
    supportLibraryVersion = '28.0.0-alpha1'
}

buildscript {
    ext.kotlin_version = '1.2.50'
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-beta01'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects 

{
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
     }
}

 task clean(type: Delete) {
     delete rootProject.buildDir
 }

График приложения:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

def versionMajor = 1
def versionMinor = 0
def versionPatch = project.hasProperty('buildNumber') ? project.getProperties().get('buildNumber').toInteger() : 0

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "app.itsyour.elegantstocks"
        minSdkVersion 25
        targetSdkVersion 28

        // Version
        versionName "${versionMajor}.${versionMinor}.${versionPatch}"
        versionCode versionMajor * 1000000 * versionMinor * 10000 + versionPatch
        resValue "string", "build_number", "Version ${versionName}"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        kapt {
            arguments {
                arg("room.schemaLocation", "$projectDir/schemas".toString())
            }
        }
    }

    buildTypes {
        release {
            resValue "string", "app_name", "Elegant Stocks"
            signingConfig signingConfigs.release
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.pro'
        }
        staging {
            resValue "string", "app_name", "Elegant Stocks"
            signingConfig signingConfigs.staging
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-staging.pro'
        }
        beta {
            signingConfig signingConfigs.beta
            debuggable true
            minifyEnabled false
            applicationIdSuffix ".beta"
            versionNameSuffix "-BETA"
            resValue "string", "app_name", "Elegant Stocks Beta"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-beta.pro'
        }
        debug {
            debuggable true
            minifyEnabled false
            resValue "string", "app_name", "Elegant Stocks Debug"
            applicationIdSuffix ".debug"
            versionNameSuffix = "-DEBUG"
        }
    }

    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
            all {
                testLogging {
                    events "passed", "failed", "skipped"
                }
            }
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "androidx.appcompat:appcompat:$androidXVersion"
    implementation "androidx.fragment:fragment-ktx:$androidXVersion"
    implementation "com.google.android.material:material:$androidXVersion"
    implementation "androidx.recyclerview:recyclerview:$androidXVersion"
    implementation "androidx.core:core-ktx:$androidXVersion"
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

    // Dagger 2
    implementation 'com.google.dagger:dagger:2.16'
    implementation 'com.google.dagger:dagger-android:2.16'
    implementation 'com.google.dagger:dagger-android-support:2.16'
    kapt 'com.google.dagger:dagger-compiler:2.16'
    kapt 'com.google.dagger:dagger-android-processor:2.16'

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'

    // Stetho
    implementation 'com.facebook.stetho:stetho:1.5.0'
    implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'

    // Rx
    implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
    implementation 'com.jakewharton.rxbinding2:rxbinding-kotlin:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7-kotlin:2.1.1'
    implementation 'com.jakewharton.rx2:replaying-share:2.0.1'

    // Room
    implementation "androidx.room:room-runtime:2.0.0-alpha1"
    implementation "androidx.room:room-rxjava2:2.0.0-alpha1"
    kapt "androidx.room:room-compiler:2.0.0-alpha1"

    // Logging
    implementation 'com.jakewharton.timber:timber:4.7.0'

    // Time
    implementation 'com.jakewharton.threetenabp:threetenabp:1.1.0'

    // UI
    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
    implementation 'net.opacapp:multiline-collapsingtoolbar:27.1.1'
    implementation 'com.balysv:material-ripple:1.0.2'

    // Testing
    androidTestImplementation "com.android.support.test:runner:1.0.2"
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
    testImplementation 'junit:junit:4.12'
    testImplementation "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}"
    testImplementation "com.nhaarman:mockito-kotlin-kt1.1:1.5.0"
    testImplementation "org.mockito:mockito-core:2.18.3"
    testImplementation "org.robolectric:robolectric:3.8"
    testImplementation "org.robolectric:shadows-multidex:3.8"
}

Proguard:

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn org.codehaus.mojo.animal_sniffer.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**

Ответ 1

Добавить -keep class androidx.core.app.CoreComponentFactory { *; } -keep class androidx.core.app.CoreComponentFactory { *; } в вашу конфигурацию proguard, чтобы этот класс не был переназначен

Ответ 2

Попробуйте отключить мгновенный запуск. Это можно сделать из настроек в Android Studio (Файл → Настройки → Сборка, Выполнение, Развертывание → Мгновенный запуск):