android中的proguard.cfg与proguard.rules.pro区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中的proguard.cfg与proguard.rules.pro区别相关的知识,希望对你有一定的参考价值。
请大师讲解一下,作用,都是用来混淆的吗?详细罗列一下,谢谢!
两个文件都用于混淆,防止反编译,用法一样。proguard.cfg 是用eclipse创建项目时生成的,而proguard.rules.pro 是android studio 创建项目时自动生成的。Eclipse proguard.cfg混淆详解http://blog.csdn.net/u010156024/article/details/44243569
AS proguard.rules.pro混淆详解
http://www.jianshu.com/p/f3455ecaa56e 参考技术A AndroidStudio混淆打包apk://混淆,新版本ninifyEnabled再runpr
Android:使用 Ant Release 构建 apk 时出现问题
【中文标题】Android:使用 Ant Release 构建 apk 时出现问题【英文标题】:Android: Problems building apk with Ant Release 【发布时间】:2011-11-04 06:02:35 【问题描述】:我在 Eclipse 中构建我的应用程序没有问题,但是一旦我尝试通过 ant 进行构建,它就无法构建。我用过“android更新项目-p”。生成 build build.xml 和 proguard.cfg 文件。我尝试了“ant compile”,它也构建得很好。该应用程序包含一个 android 库,如果需要,它还具有外部库。当我尝试执行“ant release”时,这里的任何人都会打印出错误,
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.ExceptionWithContext
at com.android.dx.util.ExceptionWithContext.withContext(ExceptionWithContext.java:46)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:340)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
at com.android.dx.command.dexer.Main.processClass(Main.java:369)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:346)
at com.android.dx.command.dexer.Main.access$400(Main.java:59)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:134)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
at com.android.dx.command.dexer.Main.processOne(Main.java:313)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)
at com.android.dx.command.dexer.Main.run(Main.java:185)
at com.android.dx.command.dexer.Main.main(Main.java:166)
at com.android.dx.command.Main.main(Main.java:90)
Caused by: java.lang.NullPointerException
at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:84)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:243)
... 23 more
我现在很困惑,所以希望有人能解释一下。
【问题讨论】:
在构建过程中发生这种情况的一些上下文会有所帮助。具体来说,在错误之前运行了哪些 ant 任务(如果有)。另外,你试过ant debug
吗?
ant 构建日志会有所帮助。
还有安装什么版本的android工具,以及项目的种类和大小的一些信息
您的 build.xml 文件是什么样的? (在你运行“android update project -p”之后。)如果你有外部依赖和库,这个文件并不总是自动正确生成。您还确定您在正确的上下文中运行此命令吗?您项目的***目录?
【参考方案1】:
仔细阅读此页面:
http://developer.android.com/tools/projects/projects-cmdline.html
您可以尝试以下解决方案之一:
1) 单行命令
android update project -p --subprojects
2) 更新主项目和库项目的build.xml文件:
android update lib-project --path myPath/Lib
android update project --name android_app --path . --library myPath/Lib
在 1) 或 2) 之后
ant clean
ant release
【讨论】:
【参考方案2】:我认为我在this page 上的回答也适用于这个错误。 当您在死代码中初始化匿名类时会发生这种情况。
为什么它只会在发布而不是在调试中发生的一个解释是,在优化时会删除死代码。
【讨论】:
以上是关于android中的proguard.cfg与proguard.rules.pro区别的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin proguard.ParseException:文件“Properties/proguard.cfg”的第 1 行中的未知选项“”
proguard.ParseException:proguard.cfg 中的未知选项“-encryptstrings”