ProGuard在IntelliJ中为模块提供了重复的jar库

时间:2014-04-05 18:06:26

标签: intellij-idea module android-studio proguard libraries

我在IntelliJ中有一个Android项目,我似乎无法让ProGuard工作。该项目分为几个模块,因为其中一些模块用于其他应用程序。应用程序结构如下:

  • 主要模块 - 包含一些活动的普通Android应用
    • libs / viewpageindicator - 库模块(不是jar)
    • libs / slidingmenu - 库模块(不是jar)
  • 网络模块 - 用于网络通信的图书馆项目。

现在问题是所有这些模块都依赖于相同的外部库 - 例如android support libraryspring。 例如,主模块网络模块都需要libs/spring-android-core-1.0.1.RELEASE.jar库。 IntelliJ可以很好地管理所有项目库,因此您可以将它们分配给不同的项目 - 这样应用程序可以毫无问题地编译。

然而,一旦使用ProGuard编译应用程序,它会将库作为输入并抛出错误:

Information:ProGuard: [main] Reading program jar [intellij/generated/proguard_input1846333276098786347.jar] Information:ProGuard: [main] Reading program jar [/libs/android-support-v4.jar] Information:ProGuard: [main] Reading program jar [/libs/spring-android-core-1.0.1.RELEASE.jar] Information:ProGuard: [main] Reading library jar [android-sdk/platforms/android-16/android.jar]

...

Error:ProGuard: [main] Warning: android.support.v4.media.TransportMediatorJellybeanMR2: can't find superclass or interface android.media.RemoteControlClient$OnGetPlaybackPositionListener ...

现在我已经阅读了官方documentation,我已经尝试了1,2和3但没有成功。 简单地忽略图书馆并不起作用: -dontwarn android.support.** -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; }

应用程序被混淆但是立即崩溃:

E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: package.name, PID: 7335 java.lang.ExceptionInInitializerError at a.b.a.d.am.<clinit>(Unknown Source) at a.d.b.b.a.a.<init>(Unknown Source)

将库指定为-libraryjars也不起作用:

-libraryjars libs/android-support-v4.jar

这只是将库添加到库列表中...现在库被添加两次,一次作为injar,一次作为libraryjar。所以有重复的类错误。我已经尝试过各种各样的组合与injars / library jar,我甚至尝试将jar移动到SDK源。

有关如何在具有多个模块的项目中管理ProGuard的任何想法?也许排除一些罐子?似乎它们被IntelliJ添加了两次,遗憾的是我似乎无法编辑IntelliJ提供的所有输入参数。 任何帮助将不胜感激。

0 个答案:

没有答案