android - Android 应用程序在设置 minifyEnabled true 时崩溃
问题描述
启用 minifyEnabled true 时应用程序崩溃。当我将其设置为错误时,应用程序开始正常工作。我需要在我的 pro-guard 文件中添加一些内容吗?我无法弄清楚导致应用程序崩溃的原因。
这是 Gradle 代码:
debug {
manifestPlaceholders = [crashlyticsApiKey: '', mapApiKey: '']
// Enables code shrinking, obfuscation, and optimization for only
debuggable true
// your project's release build type.
minifyEnabled true
// Enables resource shrinking, which is performed by the
// Android Gradle plugin.
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", "BASE_URL", '"http://"'
signingConfig signingConfigs.debug
}
日志输出:
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ExceptionInInitializerError
at l.b.g.f$a.<init>(:372)
at l.b.g.f.<init>(:19)
at l.b.h.m.a(:32)
at l.b.h.m.b(:42)
at l.b.h.b.b(:56)
at l.b.h.g.a(:32)
at l.b.f.a.a(:135)
at l.b.f.b$d.f(:747)
at l.b.f.b.b(:250)
at d.k.a.i.g.a(:36)
at d.k.a.i.g.doInBackground(:17)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: Could not read resource entities-xhtml.properties. Make sure you copy resources for l.b.g.i
at l.b.g.i.b(:301)
at l.b.g.i.a(:25)
at l.b.g.i$b.<init>(:53)
at l.b.g.i$b.<clinit>(:34)
at l.b.g.f$a.<init>(:372)
at l.b.g.f.<init>(:19)
at l.b.h.m.a(:32)
at l.b.h.m.b(:42)
at l.b.h.b.b(:56)
at l.b.h.g.a(:32)
at l.b.f.a.a(:135)
at l.b.f.b$d.f(:747)
at l.b.f.b.b(:250)
at d.k.a.i.g.a(:36)
at d.k.a.i.g.doInBackground(:17)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
02-10 15:19:58.687 17254-20516/? E/cjle: *~*~*~ Channel {0} was not shutdown properly!!! ~*~*~*
Make sure to call shutdown()/shutdownNow() and wait until awaitTermination() returns true.
02-10 15:20:25.416 17254-28037/? E/WakeLock: GCM_HB_ALARM release without a matched acquire!
请让我知道我的代码有什么问题。
谢谢
解决方案
错误堆栈表明: 原因:java.lang.IllegalStateException:无法读取资源实体-xhtml.properties。确保为 lbgi 复制资源
我认为这是因为资源/类 lbgi 被 ProGuard 排除在外。您可能希望使用 mappings.txt 文件(包含实际类/方法名称与其由 proGuard 生成的随机名称之间的映射)来解码实际资源名称,然后强制 Proguard 保留它,例如此示例https://stackoverflow。 com/a/5866755/1992013希望这会有所帮助!
推荐阅读
- reactjs - 未定义 React 组件中的 setResultState
- android - Android:当 Firebase 动态链接生成限制超过时,获取 HTTP 错误代码 429
- python - 如何在Python中的print()中删除句号之前的空格[来自指定的参数]
- python - 将数据从记事本导入python字典
- reactjs - 在本机反应中嵌套导航器
- css - 带有背景图像的 Vue3 样式指令产生 404 错误
- javascript - Twitter 社交登录页面或从 Postman 获取令牌
- html - 仅使用 CSS 重新排列表格中的元素
- ssl - MITM 代理忽略 Android 应用程序的 SSL 证书验证
- reactjs - 复选框选中/取消选中在复选框树库中不起作用