[Android]proguard重新编译和如何不混淆第三方jar包
转载自:http://glblong.blog.51cto.com/3058613/1536516
一、ant安装、环境变量配置及验证
(一)安装ant
到官方主页http://ant.apache.org下载新版(目前为Ant1.9.4)的ant,得到的是一个apache-ant-1.9.4-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.9.4。
(二)配置环境变量
window中设置ant环境变量:
ANT_HOME C:/ apache-ant-1.9.4
path C:/ apache-ant-1.9.4/bin
classpath C:/apache-ant-1.9.4/lib
注意:
配置环境变量:我的电脑----属性-----高级----环境变量
如:ANT_HOME:C:\apache-ant-1.9.4
PATH:%ANT_HOME%\bin (为了方便在dos环境下操作)
实验了总是失败,没办法换成地址 C:/ apache-ant-1.8.1/bin,而不再使用变量。。。成功了。。
(三)验证ant
为了验证ant是否成功安装,可以进行如下操作:
依次选择:开始->运行->cmd,输入如下命令:ant
如果出现如下内容,说明安装成功:
Buildfile: build.xml does not exist!
Build failed

【说明ant安装成功!因为ant默认运行build.xml文件,这个文件需要我们建立。】
二、运行ant打包proguard
cmd进入proguard目录下的build.xml所在目录,如我的:
D:\Program Files\adt-bundle-windows-x86_64-20130729\sdk\tools\proguard\build
然后运行ant便会在lib目录下重新生成新的的proguard.jar文件。

如何不混淆第三方jar包
今天遇到了一个混淆的问题,怎么用语法解决都不行
看了下错误日志:发现是在proguard读取jar包里的类的时候,有个类导致了java I.O异常
由于是第三方的包,于是就去跟第三方沟通了。
结果第三方也无法解决。
这个时候我本来的思路是重新修改proguard的源代码,在读取到这个有问题的jar包时跳过,并且直接编译一个自定义的版本。
做到一半的时候被老大点醒了,于是想到之前的另一种方法:这种方法还是我先试过的,真是惭愧。
当你怎么-keep 第三方jar包都没有用的时候,参考一下下面方法:
1,拿一个未混淆的包,对其反编译,在反编译出来的smali文件中,找到第三方jar包的路径:
D:\JianTiLianYun\baidupacker\temp\smali\com\zhangyue\util
这是我的一个路径,然后把出问题的包的smali文件全拷贝了;
2,对你原来的包进行混淆,可这时混淆失败怎么办呢?
直接打开jar包,将出问题的类删除掉,然后rebuild一下项目,再混淆;
如果是整个JAR包,且这些jar包被代码使用了,不能随意删。
那这个时候,理论上可以手动引用该jar包(不要放在lib文件夹中),
在android studio中,需要在项目设置里将dependency中的改jar包的scope改为provided,如果是compiled还是会报混淆错误。
然后,混淆成功!
3,将混淆成功的apk反编译,手动加入第一步中获取到的smali文件,再重新打包。
这时候发现程序正常运行!
$7P0Z]O0J6(VQ0.png)
[Android]proguard重新编译和如何不混淆第三方jar包的更多相关文章
- 在android中,编译的项目使用到第三方jar的导入方法 终极版!
1,在android系统环境中编译自己的项目时,往往会用到第三方jar包.这些jar包在eclipse中加入编译,一路畅通,由于eclipse已经帮助你配置好了.可是当把这个项目复制到系统环境中编译时 ...
- Android 混淆打包不混淆第三方jar包
项目由于要公布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件里加入不须要混淆的类和第三方的jar包 这个是保持自己包中不须要混淆的类,假设有些类调用了jni ...
- proguard 不混淆第三方jar包的问题
导入lib文件,并且用-dontwarn 和 keep class结合试试,例如: -libraryjars libs/log4j.jar -dontwarn org.apache.log4j.*-k ...
- Android Studio的使用(五)--导入第三方Jar包
本篇博文将介绍一下如何导入第三方Jar包. 1.首先将下载的Jar包直接Copy到libs目录下面,然后右击Jar文件,点击Add As Library后,在出现的弹出框点击确定即可. 2.打开bui ...
- 如何解决ADT17下Android第三方jar包NoClassDefFoundError的错误
转自:http://blog.csdn.net/huzgd/article/details/7604069本人已试过第二种解决方法可行!! 原文:Posted by Foxykeep on 22/03 ...
- Code-Review-Maven编译(第三方jar包引用)
Code-Review-SpringBoot-Maven编译(第三方jar包引用) 在使用maven编译项目时,有时候咱们可能会使用一些第三方的jar包依赖库,比如第三方支付类的接入,大多出于安全考虑 ...
- android studio 代码混淆如何忽略第三方jar包
日前在打包混淆包含第三方jar包的Android studio项目时 报出了各种错误,但是debug版本却能正常运行,于是怀疑android studio 打包的时候把第三方jar包给混淆了,第三方j ...
- 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...
随机推荐
- 完美且精准的 IE10- 版本检测。
通过动态的写入条件注释的方式,来判断当前的ie浏览器的版本,优点是,对比userAgent字符匹配,要精准很多,应该说是100%正确,缺点就是要通过JS写入条件注释,拖慢页面的加载速度. 如果对于只判 ...
- C#如何调用COM
这章中描述的属性被用在创建和COM程序交互的程序中. 1.1 COMImport 属性 当被放在一个类上, COMImport 属性就把这个类标记为一个外部实现的COM 类.这样的一个类声明使得可以 ...
- IStream 接口
IStream 接口 https://msdn.microsoft.com/en-us/library/windows/apps/aa380034 IStream接口允许您读取和写入 stream ...
- LeetCode - Binary Tree Level Order Traversal II
题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...
- 【转】 CSS3实现10种Loading效果
昨晚用CSS3实现了几种常见的Loading效果,虽然很简单,但还是分享一下,顺便也当是做做笔记…… PS:如需转载,请注明出处! 第1种效果: 代码如下: <div class="l ...
- node.js中使用https请求报CERT_UNTRUSTED的问题解决
只要调用了没有受信的https就会报错:CERT_UNTRUSTED 简单的解决方法就是设置环境变量回避非授信证书的问题. 只要在请求的代码之前加上如下代码即可: process.env.NODE_T ...
- net发布的dll方法和类显示注释信息(字段说明信息)[图解]
自己发布的dll添加的另一个项目中突然没有字段说明信息了,给使用带来了很多的不便,原因是为了跨项目引用,所以导致不显示注释信息的,一下是解决这个问题的方法. 在要发布(被引用)的项目上右键 => ...
- 精品干货丨APP常用导航框架
文章目的:在整体上把握移动端App的导航框架,理解每种导航所具有的优点.局限性和其所适用的范围. 文章用心:典型APP案例(源码:http://www.jinhusns.com/Products/Do ...
- MongoDB学习-安装流程
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型. ...
- soap缓存问题
问题描述: ws提供方在原有基础上增加了一个方法,通过php的soap扩展硬是获取不到该方法,提示,该方法不存在. 问题跟节: soap缓存问题,导致无法获取最新的ws文件信息 解决办法: 1.直接在 ...