首页 > 解决方案 > R8 在构建时静默崩溃

问题描述

我收到以下警告 - 构建 Android 版本时出错。

WARNING:R8: Unexpected error during rewriting of Kotlin metadata for class 'androidx.lifecycle.LifecycleController$observer$1':
com.android.tools.r8.internal.sG: lateinit property function has not been initialized
    at com.android.tools.r8.internal.Xn.a(SourceFile:302)
    at com.android.tools.r8.internal.Kn.a(SourceFile:49)
    at com.android.tools.r8.internal.Kn.a(SourceFile:24)
    at com.android.tools.r8.utils.V.a(SourceFile:36)
    at com.android.tools.r8.utils.V.a(SourceFile:41)
    at com.android.tools.r8.utils.V.a(SourceFile:35)
    at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

通常我不会对警告给予太多关注。

但是我们在发布时遇到了一个相关的生命周期错误(比如观察者根本不起作用)。

我试过-keepclasseswithmembers class androidx.lifecycle.LifecycleController.** { *; }没有运气。

标签: androidproguardandroid-r8

解决方案


在我的项目 lvl gradle 中应用 R8 插件为我解决了这个问题:

buildscript {

    repositories {
        maven {
            url 'https://storage.googleapis.com/r8-releases/raw'
        }
    }

    dependencies {
        classpath 'com.android.tools:r8:3.0.65'          // Must be before the Gradle Plugin for Android.
        classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
     }
}

推荐阅读