在 Android 版 Eclipse 中启用 ProGuard
ProGuard for Android 上的新文档表示要在 default.properties 文件中添加一行项目主目录。然而,在打开这个文件时,我在顶部读到:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
我错过了什么吗?
另外,有没有办法只为 Eclipse 的生产构建启用 ProGuard(即导出成品时)?
The new documentation on ProGuard for Android says to add a line to the default.properties file in the project home directory. However, on opening this file, I read at the top:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
Am I missing something?
Also, is there a way to enable ProGuard only for a production build from Eclipse (i.e., when exporting the finished product)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Android SDK(r20 或更高版本)
请检查project.properties 中引用的预定义 proguard.config
更多信息:http://proguard.sourceforge.net/manual/examples.html#androidapplication
在 Gradle 上:
在这里您可以检查我不断更新的 proguard“默认”文件:https://medium.com/code-procedure-and- rants/android-my-standard-proguard-ffeceaf65521
Android SDK(r19 或更低版本)
您可以将其添加到 default.properties 中。到目前为止,我一直手动添加,没有出现问题。
如果添加以下行:
如上所述,它只会在导出签名应用程序时使用 ProGuard (Android Tools => Export Signed Application)
如果您使用 Android 2.3 之前的 SDK 启动项目,则使用
proguard.cfg
文件不会被创建(如 2.3> 中的default.properties
旁边)。要启用它的自动创建,只需更新到 Android 2.3 的 SDK 并使用现有源(即您当前拥有的项目的源)创建一个新项目。
将自动创建
proguard.cfg
填充。如果仍然想手动创建它,这就是它应该包含的内容:
我想我已经回答了上面的所有问题。
更新:
逐行解释:
更新2:
在最新的ADT/Proguard中使用
-keepclasseswithmembers
而不是-keepclasseswithmembernames< /代码>
Android SDK (r20 or higher)
Please check the predefined proguard.config refered in project.properties
More info: http://proguard.sourceforge.net/manual/examples.html#androidapplication
On Gradle:
Here you can check a proguard "default" file that I keep updating: https://medium.com/code-procedure-and-rants/android-my-standard-proguard-ffeceaf65521
Android SDK (r19 or lower)
You can add it to the default.properties. I've been adding manually without having a problem so far.
If you add the line:
As said it will only use ProGuard when exporting signed application (Android Tools => Export Signed Application)
If you start the project with the SDK before Android 2.3 the
proguard.cfg
file will not be created (next todefault.properties
as in 2.3>).To enable automatic creation of it, just simply update to the SDK of Android 2.3 and create a new project with existing sources (which are the sources of the project you currently have).
Automagically the
proguard.cfg
fill will be created.If still, you want to create it manually this is what it should contain:
I think I've answered all the questions above.
UPDATE:
A line by line explanation:
UPDATE 2:
In the most recent ADT/Proguard use
-keepclasseswithmembers
instead of-keepclasseswithmembernames
只是一个后续,因为我正在寻找同样的东西 - 而且这里的答案已经过时了 - 最近基本的 proguard 配置位于 sdk 目录中 - 所以你只需将其放入你的project.properties:
如果你想进行特定于项目的修改,创建 proguard-project.txt 并将该行更改为:
just a follow-up because I was searching for the same thing - and the answers here are outdated - lately the base proguard config is here in the sdk dir - so you only have to put this into your project.properties:
if you want to make project-specific modifications, create a proguard-project.txt and change the line to:
至少从 ADT 16 开始,您确实可以在
project.properties
中添加该行,并且它将被保留。您可以尝试更改目标 SDK 版本,并看到project.properties
已相应更新,但添加的行仍然存在。所以,我认为这个警告的措辞很糟糕;这意味着文件中的设置(例如target
)将被项目设置覆盖,而不是相反。As of ADT 16 at least, you can indeed add the line in
project.properties
, and it will be preserved. You can try changing the target SDK version, and see thatproject.properties
is updated accordingly but the added line is still there. So, I think the warning is just badly worded; it means to say that settings in the file such astarget
will be overwritten with project settings, rather than vice versa.ADT 版本 17 中对 ProGuard 配置进行了更改。ProGuard 从 4.4 更新到 4.7,并介绍了配置文件参考中的差异(已说明)。请注意,现有项目将保持不变,从而使它们没有此版本和较新 ADT 版本中包含的较新规则集。
上面 ligi 已经指出了较新配置安排的相关文档,可在以下位置找到:-
http://tools.android.com/recent/proguardimprovements “其次,我们改变了配置文件的处理方式。”
Changes to ProGuard configuration came about with ADT version 17. ProGuard was updated from 4.4 to 4.7 and the difference in the configuration file reference already note was introduced. Note that existing projects would remain unchanged, leaving them without the newer rule set included in this and newer ADT versions.
Relevant doc for newer configuration arrangement, already noted by ligi above, are available at:-
http://tools.android.com/recent/proguardimprovements "Second, we've changed the way configuration files are handled."
您可以将该行添加到
build.properties
,如default.properties
中所述。You can add the line to
build.properties
, as mentioned indefault.properties
.