Используйте customerProguardFiles в моей библиотеке AAR и получите файл, не найденный при использовании obfuscationdictionary - PullRequest
0 голосов
/ 16 июня 2019

В моей библиотеке я использую consumerProguardFiles в выпуск тип сборки. Моя роль охранника:

-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) в проекте и получают сборку релиза и используют 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 без использования файла словаря? или же Как я могу это исправить?

1 Ответ

0 голосов
/ 17 июня 2019

Все упомянутые правила не должны никогда идти в файл, на который указывает consumerProguardFiles, они выглядят линейными правилами, которые должны идти в proguardFiles для построения библиотеки. Кроме того, если у вас нет особых требований, лучше всего не использовать все -obfuscationdictionary, -classobfuscationdictionary и -packageobfuscationdictionary из proguardFiles для построения библиотеки.

consumerProguardFiles используется для правил, которые должен иметь потребитель библиотеки для работы библиотеки. Все эти правила будут включены в сборку для проекта, потребляющего библиотеку. Если ваша библиотека не использует отражение, то consumerProguardFiles, скорее всего, вообще не понадобится.

...