外部 AAR 依赖项中的 proguard.txt 损坏(非 ascii 字符)

Posted

技术标签:

【中文标题】外部 AAR 依赖项中的 proguard.txt 损坏(非 ascii 字符)【英文标题】:broken proguard.txt in external AAR dependency (non-ascii characters) 【发布时间】:2020-04-22 01:25:10 【问题描述】:

Appsflyer 4.11.0 AAR 的内部 proguard.txt 中似乎有很多非 ascii 字符 结果,gradle 失败并出现以下异常:

> 任务:aaa-android:transformResourcesWithMergeJavaResForGeneralDebug 警告:处理任务 java.io.IOException 时出现异常:proguard.ParseException:在“Л?”之前期望类成员名称在文件 '...\.gradle\caches\transforms-2\files-2.1\29b5b62e2aecc0fd037709d7255ea0ac\proguard.txt' 的第 20 行 线程(任务限制器_1):销毁 > 任务:aaa-android:transformClassesAndResourcesWithProguardForGeneralDebug 失败 请求从 0 增加活跃劳动力。当前劳动力(死亡或活着)0 线程池大小=4 FAILURE:构建失败并出现异常。 * 什么地方出了错: 任务“:aaa-android:transformClassesAndResourcesWithProguardForGeneralDebug”执行失败。 > 作业失败,详情请查看日志 * 尝试: 使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。 * 例外情况是: org.gradle.api.tasks.TaskExecutionException:任务':aaa-android:transformClassesAndResourcesWithProguardForGeneralDebug'的执行失败。 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95) 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91) ... 引起:java.io.IOException:proguard.ParseException:在'Л'之前期望类成员名称?在文件 '...\.gradle\caches\transforms 的第 20 行 -2\files-2.1\29b5b62e2aecc0fd037709d7255ea0ac\proguard.txt' 在 com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:268) 在 com.android.build.gradle.internal.transforms.ProGuardTransform.access$000(ProGuardTransform.java:65) ...

问题是:

    是否可以忽略来自外部 AAR 的错误 proguard.txt? 是否可以设置语言环境以用有意义的方式解释非 ascii 字符?

提前致谢! 安德烈·伊萨科夫

我试图清理 gradle 缓存。我还尝试像这样设置 gradle 语言环境:

GRADLE_OPTS="-Duser.language=us -Duser.country=US -DLANG=en_US.UTF-8 -DLANGUAGE=en_US:en -DLC_ALL=en_US.UTF-8" 或在控制台中设置系统变量。没有效果 :(

【问题讨论】:

【参考方案1】:

将 gradle 5.1.1 -> 6.0.1 和 android 工具的版本从 3.2.x 提升到 3.5.2 解决了这个问题(R8 和旧 Proguard 现在都可以正常工作了)

【讨论】:

以上是关于外部 AAR 依赖项中的 proguard.txt 损坏(非 ascii 字符)的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Android 库 (AAR) 中包含 proguard 配置

android studio 打包aar并重命名

混淆 .aar 文件

eslint 'html-webpack-plugin' 应该列在项目的依赖项中,而不是 devDependencies 中。 (导入/无外部依赖项)

本地 aar 库的传递依赖

Android build.gradle 中的 proguard-android-optimize.txt 与 proguard-android.txt