Java 在Eclipse中导出Android应用程序时,Proguard似乎没有效果/无法运行
我即将发布一个Android应用程序,并希望使用Proguard来混淆代码。我按照中所述完成了所有操作,但Proguard似乎没有运行: 这就是我所做的:Java 在Eclipse中导出Android应用程序时,Proguard似乎没有效果/无法运行,java,android,eclipse,proguard,Java,Android,Eclipse,Proguard,我即将发布一个Android应用程序,并希望使用Proguard来混淆代码。我按照中所述完成了所有操作,但Proguard似乎没有运行: 这就是我所做的: 该指南说,“proguard.cfg文件在项目的根目录中自动生成”。在我的项目根目录中没有这样的文件,只有一个proguard project.txt文件。我假设这就是指南中提到的confic文件 我没有对proguard project.txt文件进行任何更改。因此,Proguard应该应用于所有类名等 我编辑了project.proper
proguard project.txt
文件。我假设这就是指南中提到的confic文件proguard project.txt
文件进行任何更改。因此,Proguard应该应用于所有类名等project.properties
并取消了proguard.config=…
行的注释:
proguard.config=${sdk.dir}/tools/proguard/proguard android.txt:proguard project.txt
发布模式下运行应用程序,但正如指南所说,当应用程序使用“文件/导出/导出Android应用程序”菜单构建时,这是自动完成的
因此,我导出了应用程序来创建APK。guid表示Proguard每次运行时都会在项目目录中创建多个文件和文件夹,例如dump.txt
,mapping.txt
,等等。但这些文件都没有创建。此外,console或日志中没有输出。因此,我假设Proguard没有运行
是否有一种(简单的)方法来测试文件是否被混淆/是否运行了Proguard?要使Proguard正常工作,我还必须做些什么?我认为Proguard-project.txt的默认版本没有任何作用。可能是这样的:
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
#
# Add any project specific keep options here:
#
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
首先,尝试向该文件添加一些内容,以检查项目编译时间是否更改。例如:
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable,Signature
# Obfuscation
-repackageclasses ''
-flattenpackagehierarchy ''
您还可以检查运行apktool解码\u APK
是否重命名了类和方法
我希望这对你有帮助 非常简单,首先在项目的根文件夹中创建一个文件名proguard.cfg,并定义规则,这是常见规则:
将此行添加到project.properties
proguard.config=proguard.cfg
然后选择Android工具>导出签名应用程序包,创建密钥存储并查看结果。如果您使用任何特殊的lib,需要在Eclipse无法创建signapk时定义自己的规则,请参阅proguard手册
如果它可以创建一个签名的apk,您可以在proguard文件夹中看到mapping.txt,用于任何模糊的类/常量,听起来您做的事情都是正确的。导出时,是否使用自己的密钥?Eclipse错误日志显示了什么吗?是否实际导出了.apk文件?非常感谢!我认为通过指定Proguard project.txt
的路径来“激活”Proguard足以启用基本的模糊处理,但事实并非如此。如果不在proguard project.txt中指定进一步的细节,proguard将什么也不做。谢谢你的提示:-)