我已经更新到新的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和“extends”,所以我想知道:可以以某种方式引用项目中的文件而不是(并将“父”文件的内容放入文件中)?如果是这样,我该怎么做?
答案 0 :(得分:3)
如果以前工作正常并且您还没有学过Proguard,只需更改此行:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
到这一行:
proguard.config=proguard.cfg
然后你将恢复旧的Proguard设置,我建议更新,除非你使用一些第三方罐子,它应该可以工作吗?这些是缺少的,你应该使用-keep标志来阻止Proguard在混淆时删除它们。
答案 1 :(得分:2)
好的,解决方案是由于某些原因,我在eclipse上为sdk.dir变量设置了错误的位置。
所以我做的是:
- 转到eclipse的首选项
- 搜索变量
- 转到java->构建路径 - >类路径变量
- 并添加了“sdk.dir”变量和目录的值 android sdk。
醇>
答案 2 :(得分:1)
在您的项目根文件夹中创建一个文件proguard.cfg并将您的adt更新为21并使用proguard v4.8或4.9并且在导出APK之前不要忘记运行Android Lint
答案 3 :(得分:0)
默认配置文件的路径已更改为
$ {sdk.dir} /tools/proguard/proguard-android-optimize.txt
答案 4 :(得分:0)
使用SDK 22,我的解决方案是将$ {sdk.dir} / tools / proguard /中的proguard-project.txt复制到我的项目工作区。
如果查看project.properties,就会看到它引用了${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
。
它发现$ {sdk.dir}很好,但是在项目目录中寻找proguard-project.txt。