Android 编程下引入第三方jar包进行代码混淆时的问题解决
来源:互联网 发布:改图片大小的软件 编辑:程序博客网 时间:2024/05/21 15:40
许多安卓开发者在完成 Android 项目后,启用代码混淆功能并且尝试导出签名的 APK 安装包时经常会遇到 "Proguard returned with error code 1. See console" 的弹窗提示,如下图所示:
同时在查看控制台的时候也会发现 “You may need to specify additional library jars (using '-libraryjars').” 的报错提示,如下图所示:
出现此错误提示是因为使用了 Proguard 代码混淆器,同时在项目中引用了第三方 jar 包,但却没有在 Proguard 的配置文件中标明引用了的 jar 包所致。解决方法如下:
在项目的目录下找到 proguard-project.txt 文件,将其打开后在任一空行中使用-libraryjars 标明所有引用的第三方 jar 包。如下图所示:
然后在 project.properties 文件的空白行加入proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 即可进行代码混淆的文件导出,配置信息如下图所示:
【注意】使用 -libraryjars 标明引用的第三方 jar 包时需要填写正确的相对路径,如果按照形如 (-libraryjars activation.jar)的格式进行标明,则控制台中会报类似如下的错误:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[2012-09-21 20:51:06 - SMSReceiver] Proguard returned with error code 1. See console
[2012-09-21 20:51:06 - SMSReceiver] java.io.IOException: Can't read [D:\workspace\SMSReceiver\activation.jar] (No such file or directory)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.InputReader.readInput(InputReader.java:230)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.InputReader.readInput(InputReader.java:200)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.InputReader.readInput(InputReader.java:178)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.InputReader.execute(InputReader.java:100)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.ProGuard.readInput(ProGuard.java:196)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.ProGuard.execute(ProGuard.java:78)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.ProGuard.main(ProGuard.java:492)
[2012-09-21 20:51:06 - SMSReceiver] Caused by: java.io.IOException: No such file or directory
[2012-09-21 20:51:06 - SMSReceiver] at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:50)
[2012-09-21 20:51:06 - SMSReceiver] at proguard.InputReader.readInput(InputReader.java:226)
[2012-09-21 20:51:06 - SMSReceiver] ... 6 more
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
仔细看这里的报错 Can't read [D:\workspace\SMSReceiver\activation.jar],从这句报错中我们可以发现进行代码混淆的过程中程序会去D:\workspace\SMSReceiver\目录下寻找名为activation.jar的第三方 jar 包,但是这些第三方 jar 包的真实路径却是在我们自己在将 jar 包引入的过程中新建的 lib 目录中,也就是说,我们在标明第三方 jar 包的时候需要在包名前添加 lib 目录,这样程序才能找到相应的资源。第三方 jar 包真实路径如下图所示:
按照解决方法进行操作后即可将混淆后的 APK 文件进行导出,以下截图是将导出的 APK 文件反编译后看到的代码混淆效果:
- Android 编程下引入第三方jar包进行代码混淆时的问题解决
- Android 编程下引入第三方jar包进行代码混淆时的问题解决
- android 代码混淆 不混淆第三方jar包
- android 代码混淆 不混淆第三方jar包
- android 打包时不混淆第三方的jar包
- android 混淆时忽略第三方jar包的
- Android 第三方Jar包FastJson 代码混淆时的解决方法
- Android 第三方Jar包FastJson 代码混淆时的解决方法
- AndroidStudio对包含已混淆的第三方jar包的项目进行代码
- android引入unity-classes.jar之后进行混淆的问题解决
- android引入unity-classes.jar之后进行混淆的问题解决
- 关于android代码混淆 过滤第三方jar包
- 关于Android代码混淆包含第三方jar包
- android studio 代码混淆如何忽略第三方jar包
- android studio 代码混淆如何忽略第三方jar包
- android studio 代码混淆如何忽略第三方jar包
- Android代码混淆(第三方jar的混淆)
- android混淆, 忽略第三方jar包
- 以“双赢”为目标,工程实施项目IT咨询之业务流程优化
- vnc远程控制linux/windows
- web 版iis
- MFC显示灰度图片
- Object的那点事:(继承自NSobject类的对象到底用不用分配内存控件)
- Android 编程下引入第三方jar包进行代码混淆时的问题解决
- 一台服务器安装两个tomcat7 服务的解决方案(window)
- Android SQLite学习指南
- js 弹出div窗口 可移动 可关闭
- Junit4概述
- linux_常用软件安装
- opencv定时采集图像并存储本地
- XML的SelectNodes使用方法以及XPath
- Java中的值传递和引用传递