intellij-idea - android混淆器无法访问 jarfile libproguardjar在intellij 11.1

  显示原文与译文双语对照的内容

我有一个问题 Unable to access jarfile.. libproguard.jar 运行时 Export Singed Application Package 来自 IntelliJ 11.1.

环境:

  • 混淆器运行在android SDK r16 成功。
  • 混淆器运行在android SDK r17 失败。

问题是IntelliJ设置错误或者 IntelliJ 11 Bug?

时间:

编辑 $ANDROID_SDKtoolsproguardbinproguard.bat 并将绝对路径设置为 PROGUARD_HOME

可能类似于:


SET PROGUARD_HOME="c:android-sdktoolsproguard"
java -jar"%PROGUARD_HOME%"libproguard.jar %*

如果你的Android SDK路径中有一个空格,这个问题也会出现。 解决方案是修改 $ANDROID_SDKtoolsproguardbinproguard.sh 更改最后一行:


java -jar $PROGUARD_HOME/lib/proguard.jar"$@"


java -jar"$PROGUARD_HOME/lib/proguard.jar""$@"

在MAC上:


/Applications/Android Studio.app/sdk/tools/proguard/bin/proguard.sh

更改最后一行:


java -jar $PROGUARD_HOME/lib/proguard.jar"$@"


java -jar"$PROGUARD_HOME/lib/proguard.jar""$@"

我在 Windows 机器上发生的原因是我在我的文件系统中移动了 Android SDK的位置,但我没有更新 PROGUARD_HOME 系统变量。 PROGUARD_HOME 系统变量在 {android-sdk}toolsproguardbinproject.bat 文件。

额外信息:

我的PROGUARD_HOME 系统变量的值被设置为旧的Android SDK目录中的路径。 以后我不应该体验这个问题,因为我现在创建了一个指向我的Android SDK的ANDROID_HOME 系统变量,并且 PROGUARD_HOME 系统变量现在被定义如下:


%ANDROID_HOME%toolsproguard

如果我将来重新定位 Android SDK,我所做的所有事情都是更新我的ANDROID_HOME 系统变量。

这里问题在我更新工具( 26.6.2 ) + 从xp迁移到win7后发生。

可能的原因可能在混淆器的地方,因为一些文件夹可以在他们的路径文件夹'名称( 比如"Program Files",例如。) 。 在我的例子中,我做了上面指出的事情,但是把整个混淆器文件夹复制到了新的地方( 我的新变成了":proguard"),并把它的路径放到 PROGUARD_HOME


SET PROGUARD_HOME="c:proguard"

在 $ANDROID_SDKtoolsproguardbinproguard.bat 文件中。


另一种可能的方法:在工具升级之后,我发现了非常简单的解决方案: 查找环境变量 PROGARD_HOME on Windows 并编辑它的路径到( 在我的情况下,目前):


not C:Program FilesAndroidandroid-sdktoolsproguard 

但是"program: FilesAndroidandroid-sdktoolsproguard"

我可以从 命令行 和( 但如果我运行混淆器不是从它的bin 目录) 重现这个问题。

我提交了一个 Bug,请观看/投票

...