转载自: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文件,再重新打包。

这时候发现程序正常运行!

[Android]proguard重新编译和如何不混淆第三方jar包的更多相关文章

  1. 在android中,编译的项目使用到第三方jar的导入方法 终极版!

    1,在android系统环境中编译自己的项目时,往往会用到第三方jar包.这些jar包在eclipse中加入编译,一路畅通,由于eclipse已经帮助你配置好了.可是当把这个项目复制到系统环境中编译时 ...

  2. Android 混淆打包不混淆第三方jar包

    项目由于要公布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件里加入不须要混淆的类和第三方的jar包   这个是保持自己包中不须要混淆的类,假设有些类调用了jni ...

  3. proguard 不混淆第三方jar包的问题

    导入lib文件,并且用-dontwarn 和 keep class结合试试,例如: -libraryjars libs/log4j.jar -dontwarn org.apache.log4j.*-k ...

  4. Android Studio的使用(五)--导入第三方Jar包

    本篇博文将介绍一下如何导入第三方Jar包. 1.首先将下载的Jar包直接Copy到libs目录下面,然后右击Jar文件,点击Add As Library后,在出现的弹出框点击确定即可. 2.打开bui ...

  5. 如何解决ADT17下Android第三方jar包NoClassDefFoundError的错误

    转自:http://blog.csdn.net/huzgd/article/details/7604069本人已试过第二种解决方法可行!! 原文:Posted by Foxykeep on 22/03 ...

  6. Code-Review-Maven编译(第三方jar包引用)

    Code-Review-SpringBoot-Maven编译(第三方jar包引用) 在使用maven编译项目时,有时候咱们可能会使用一些第三方的jar包依赖库,比如第三方支付类的接入,大多出于安全考虑 ...

  7. android studio 代码混淆如何忽略第三方jar包

    日前在打包混淆包含第三方jar包的Android studio项目时 报出了各种错误,但是debug版本却能正常运行,于是怀疑android studio 打包的时候把第三方jar包给混淆了,第三方j ...

  8. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  9. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

随机推荐

  1. Maven提高篇系列之(四)——使用Profile

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  2. 从NavigationController 下的UITableView中移除 header

    this.AutomaticallyAdjustsScrollViewInsets = false; 解析:AutomaticallyAdjustsScrollViewInsets为系统自动为适应na ...

  3. mysql---ENCODE警告

    'ENCODE' is deprecated and will be removed in a future release. Please use AES_ENCRYPT instead ***** ...

  4. ListView 下拉更新 (支持 Android)

    注意:XE7 已提供下拉更的功能. 说明:展示如何在 Android 平台下,使用 ListView 下拉更新. 适用:Delphi XE5 , XE6 修改:需要修改到 Delphi 源码 FMX. ...

  5. webservice入门(2)开发ws程序

    因为webservice分为服务端和客户端,所以如果要学习的话,那么肯定是包括这两部分的了. 1.开发服务端的webservice: 使用jdk开发ws其实很简单,只是需要一些注解:最重要的是 @We ...

  6. 应用服务器和Web服务器

    如上图所示,绝大部分的公司会采用Apache+tomcat集群(或jetty集群)来部署公司的Web服务, Web服务器和应用服务器关系,先介绍一下我们常说的服务器: Tomcat服务器,是运行ser ...

  7. Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern

    Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming.这其中 ...

  8. [AngularJS] 使用AngularCSS动态加载CSS

    [AngularJS] 使用AngularCSS动态加载CSS 前言 使用AngularAMD动态加载Controller 使用AngularAMD动态加载Service 上列两篇文章里,介绍了如何如 ...

  9. Quartz.NET开源作业调度框架系列(三):IJobExecutionContext 参数传递

    前面写了关于Quartz.NET开源作业调度框架的入门和Cron Trigger , 这次继续这个系列, 这次想讨论一下Quartz.NET中的Job如何通过执行上下文(Execution Conte ...

  10. EventRay UI Kit – Web & Mobile 的素材

    EventRay UI 工具包是一个免费的,可以现成使用的界面套件.包括多个为  Web 和移动应用设计的布局和 UI 元素.所有你需要做的就是下载这个 UI 工具包,点击源码下载打开的页面即可下载. ...