【发布时间】:2014-09-04 12:43:13
【问题描述】:
我已经为此苦苦挣扎了一段时间。我正在尝试在 IntelliJ IDEA 13.1.3 中 Generate Signed APK 并在 APK 上 Run ProGuard 4.7 但我无法摆脱以下错误:
错误:ProGuard:[project_name] 错误:无法读取 [C:\Program Files (x86)\Android\android-sdk\tools\proguard\libs](没有这样的文件或目录)
错误消息前面是这条消息:
信息:ProGuard:[project_name]读取库目录[C:\Program Files (x86)\Android\android-sdk\tools\proguard\libs]
该位置只有一个lib 目录,其中包含proguard.jar 和另外两个jar 文件。我创建了一个空的libs 目录,但之后出现了更多错误。
否则,混淆似乎可以正常工作,并且在没有混淆的情况下,签名的 APK 会正确生成。
Android SDK Build-tools 版本为 20。
这是 proguard-project 文件:
-libraryjars libs
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class * extends java.util.ListResourceBundle
{
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable
{
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class *
{
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable
{
public static final ** CREATOR;
}
更新
看来这个问题归结为proguard-project 文件中的-libraryjars libs 行。当我从proguard-project.txt 中删除该行时,我设法通过一个简单的测试项目正确地Generate Signed APK。但是,当-libraryjars libs 未被删除时,混淆失败。
如果在实际项目上尝试运行 ProGuard 时该行被剥离,则会产生更多错误。
【问题讨论】:
标签: android intellij-idea proguard