android - 在我的 AAR 库中使用 consumerProguardFiles 并在使用混淆字典时获取文件未找到
问题描述
在我的库中,我consumerProguardFiles
在发布构建类型中使用。我的proguard角色是:
-obfuscationdictionary proguard-dictionary.txt
-classobfuscationdictionary proguard-dictionary.txt
-packageobfuscationdictionary proguard-dictionary.txt
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/removal/writeonly,!field/marking/private,!class/merging/*,!code/allocation/variable
-flattenpackagehierarchy
-allowaccessmodification
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes Signature,MethodParameters,LocalVariableTable,LocalVariableTypeTable
-keepattributes SourceFile,LineNumberTable
-keepattributes Exceptions,InnerClasses
当开发人员在项目中使用我的库(AAR)并获取 release build 和 use时,找不到minifyEnabled true
get :proguard-dictionary.txt
AGPBI: {"kind":"error","text":"File not found: /Users/USER/.gradle/caches/transforms-2/files-2.1/12e928515abf78e8a4387fd92c3a399b/proguard-dictionary.txt","sources":[{"file":"/Users/USER
/.gradle/caches/transforms-2/files-2.1/12e928515abf78e8a4387fd92c3a399b/proguard-dictionary.txt"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"File not found: /Users/USER
/.gradle/caches/transforms-2/files-2.1/12e928515abf78e8a4387fd92c3a399b/proguard-dictionary.txt","sources":[{"file":"/Users/USER
/.gradle/caches/transforms-2/files-2.1/12e928515abf78e8a4387fd92c3a399b/proguard-dictionary.txt"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"File not found: /Users/USER
/.gradle/caches/transforms-2/files-2.1/12e928515abf78e8a4387fd92c3a399b/proguard-dictionary.txt","sources":[{"file":"/Users/USER
/.gradle/caches/transforms-2/files-2.1/12e928515abf78e8a4387fd92c3a399b/proguard-dictionary.txt"}],"tool":"D8"}
如何在-obfuscationdictionary
不使用字典文件的情况下使用?或者我该如何解决这个问题?
解决方案
提到的所有规则都不应该进入指向的文件consumerProguardFiles
,它们看起来应该进入proguardFiles
构建库的行规则。另外,除非您有非常特殊的要求,否则最好省略所有-obfuscationdictionary
,-classobfuscationdictionary
和-packageobfuscationdictionary
fromproguardFiles
来构建库。
用于图书馆的consumerProguardFiles
使用者需要为图书馆工作的规则。所有这些规则都将进入使用该库的项目的构建中。如果您的库不使用反射,那么consumerProguardFiles
很可能根本不需要。
推荐阅读
- ansible - 将键名提取到列表中
- css - CSS Grid 自动适应最大内容
- php - PHP require_once 仍然需要多次
- linux - PS1没有设置颜色
- c# - 如何从 Stream 创建 IMediaPlaybackSource,以便在不使用过时的 SetStreamSource 方法的情况下设置 MediaPlayer 源?
- common-lisp - 如何在 sbcl 中找到外星结构的大小?
- javascript - 自动单选按钮选择
- javascript - React - 在默认值更改时执行一个函数
- sql - where 子句中的 case 语句中使用的输入参数
- python - 在 Python 中掷 2 个骰子,如果它们是相同的数字,再掷一次,然后继续