4

我已经更新到新的adt&sdk 20,并且在 Eclipse 上使用 Proguard 的新方式遇到了问题。我根本不是 Proguard 的专业人士,但我一直在使用它,而且它很容易工作。我只是编辑了“project.properties”文件并在那里添加了“proguard.config=proguard.cfg”,它就可以工作了。

可悲的是,进行了一些更改,我无法找到有关如何使用它们的任何信息。谈论 Proguard 的官方网站(在 Android 网站中)仍然谈论旧的方式。

他们在“project.properties”上写道,取消注释下一行:

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

这不起作用,它在尝试导出时给了我这些错误:

Proguard returned with error code 1. See console
java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?
at proguard.shrink.Shrinker.execute(Shrinker.java:159)
at proguard.ProGuard.shrink(ProGuard.java:275)
at proguard.ProGuard.execute(ProGuard.java:101)
at proguard.ProGuard.main(ProGuard.java:492)

谁能帮我这个?我以前从未更改过 proguard.cfg 文件,而且一切都是自动的。我不得不做这样的事情是非常罕见的。

他们还添加了一个文件“proguard-project.txt”,它可能会替换 sdk 文件夹文件中的 proguard.cfg 和“扩展”,所以我想知道:是否可以以某种方式引用项目中的文件(并将将“父”文件的内容放入文件中)?如果是这样,我该怎么做?

4

5 回答 5

3

如果它之前运行良好并且您还没有学习 Proguard,只需更改此行:

 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

到这一行:

 proguard.config=proguard.cfg

那么您将恢复旧的 Proguard 设置,但我建议您进行更新,除非您使用一些 3rd 方 jar,否则它应该可以正常工作?这些就是它所说的缺失,你应该使用 -keep 标志来阻止 Proguard 在混淆时删除它们。

于 2012-06-08T20:24:51.687 回答
2

好的,解决方案是由于某种原因,我在 Eclipse 上为 sdk.dir 变量设置了错误的位置。

所以我所做的是:

  1. 转到eclipse的首选项
  2. 搜索变量
  3. 然后去 java->build path->classpath variables
  4. 并添加了带有 android sdk 目录值的“sdk.dir”变量。
于 2012-06-10T07:32:48.183 回答
1

在您的项目根文件夹中创建一个文件 proguard.cfg 并将您的 adt 更新为 21 并使用 proguard v4.8 或 4.9 并且不要忘记在导出 APK 之前运行 Android Lint

于 2013-04-29T12:32:37.870 回答
0

默认配置文件的路径已更改为

${sdk.dir}/tools/proguard/proguard-android-optimize.txt

于 2014-07-02T06:39:34.747 回答
0

使用 SDK 22,我的解决方案是将 proguard-project.txt 从 ${sdk.dir}/tools/proguard/ 复制到我的项目工作区中。

如果您查看 project.properties,您会看到它引用了${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt.

它找到 ${sdk.dir} 就好了,但是在项目目录中寻找 proguard-project.txt。

于 2015-07-16T14:21:24.720 回答