混淆.aar文件

我已经创建了一个Android库项目的.aar文件(包含资源和drawable)

./gradlew assemble 

我通过设置minify == true启用了混淆

 buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 

但是,当我使用minify enabled = true运行提到的gradle命令时,我得到java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options? java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?

这个错误指向什么,以及如何模糊库.aar文件?

最好的祝福

Proguard削减了未使用的课程。 库是独立的产品,并且有一些特定的入口点,不应该是混淆的。 所以你需要添加规则来保持这个入口点。 规则看起来像这样:

 -keep class packagename {public *;} 

两个建议:

  1. 请确保库模块中存在此文件:proguard-rules.pro。
  2. 请尝试运行“./gradlew:mylib:assembleRelease”,并将“mylib”替换为您的库模块名称。
  1. 将library.pro文件从此位置复制到您的库项目:
     ...\android-sdk\tools\proguard\examples 
  2. 从Android Studio构建时注释这些行,从命令行构建时应该保留/更新它们:
     -injars in.jar -outjars out.jar -libraryjars /lib/rt.jar 
  3. 更新库项目build.gradle文件以使用library.pro

     release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'library.pro' } 
  4. 同步并构建项目,它现在应该生成一个模糊的AAR文件。