Android Archieve(.aar) 库的 ProGuard 问题
ProGuard issues with Android Archieve(.aar) library
我有一个我想以 AAR 格式分发的库项目。我已经在上面应用了 ProGuard。
ProGuard 设置在我将此库用作模块时效果很好,但在我使用生成的 AAR 时效果不佳。基本上它在应用程序项目中失败并出现异常 "java.lang.IllegalArgumentException: already added Lmy/lib/package/name/R;"。
ProGuard 正在将我的一个库 class 重命名为 R,我认为这会导致应用程序项目出现问题,因为 R 用于资源。
如何在 Studio 中指定 proguard 映射以告诉它不要重命名为 R。
更新:
添加 AAR 文件作为新模块后,出现此错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lmy/lib/package/name/R;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
那好吧,回答我自己。
在 .aar 上手动尝试 运行 ProGuard,使用最新版本 v5.2.1。不适用于 Studio v1.2.2 附带的默认版本 v4.7。希望这有帮助。
我有一个我想以 AAR 格式分发的库项目。我已经在上面应用了 ProGuard。
ProGuard 设置在我将此库用作模块时效果很好,但在我使用生成的 AAR 时效果不佳。基本上它在应用程序项目中失败并出现异常 "java.lang.IllegalArgumentException: already added Lmy/lib/package/name/R;"。
ProGuard 正在将我的一个库 class 重命名为 R,我认为这会导致应用程序项目出现问题,因为 R 用于资源。
如何在 Studio 中指定 proguard 映射以告诉它不要重命名为 R。
更新: 添加 AAR 文件作为新模块后,出现此错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lmy/lib/package/name/R;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
那好吧,回答我自己。
在 .aar 上手动尝试 运行 ProGuard,使用最新版本 v5.2.1。不适用于 Studio v1.2.2 附带的默认版本 v4.7。希望这有帮助。