轉載自: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文件,再重新打包。
這時候發現程序正常運行!
