android - 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.** { *; }
没有运气。
解决方案
在我的项目 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.
}
}
推荐阅读
- java - EasyModBus modbusClient.ReadHoldingRegisters() 返回意外 0
- java - 使用 JPA 转义 MS-SQL、Oracle 和 PostgreSQL 数据库的保留字?
- sql - 在 Ruby on Rails 中创建一个范围,仅当所有关联的实例都符合特定条件时才返回一个对象的实例
- android - 颤振构建问题
- haskell - Haskell如何打印可变向量
- python - Python 3 错误地将“0x0000”字符串转换为十六进制
- aws-lambda - 我可以从脚本中调用 AWS lambda 吗?
- netsuite - 从服务器端写入文件时,是否有任何方法可以调用 window.print() api
- python - 在二维数组中找到带有 numpy 的特定元素
- python - 我无法在我的虚拟环境中安装 Django