Android 配置 Ant 脚本之代码混淆和优化

本文的目的是介绍怎么样配置android的ant自动化编译脚本,来实现编译发布版本时代码的混淆和代码的优化,利用的主要工具包括ant和proguard。

编译环境

  • ant 版本 1.8.4
F:\workspace\eReader>ant -version
Apache Ant(TM) version 1.8.4 compiled on May 22 2012
  • java 版本 1.7
F:\workspace\eReader>java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing)

文件配置

因为 Android 已经内置了 proguard 的支持,所以我们只需要进行配置启用该功能即可。

  • 生成 build.xml 文件
F:\workspace\eReader>android update project -p .
  • 配置 local.properties 文件 sdk.dir会自动指向当前系统android的开发环境路径,key.store和key.alias分别指向签名文件和签名文件的别名,这个需要自己制作,主要是release的时候需要使用
sdk.dir=E:\\PROGRA~1\\android-sdk-windows

key.store=F:\\Android\\android_key\\careychow.keystore
key.alias=Carey
  • 配置 build.xml 文件配置签名算法为 SHA1
 <?xml version="1.0" encoding="UTF-8"?>
 <project name="GAReader" default="help">
     .... 此处省略若干

     <presetdef name="signjar">
         <signjar sigalg="MD5withRSA" digestalg="SHA1" />
     </presetdef>

 </project>

自动化编译

  • 执行编译命令 ant release
   F:\workspace\eReader>ant release
  • 输入签名密钥的密码和签名别名的密码进行签名
   ......
   -release-prompt-for-password:
    [input] Please enter keystore password (store:F:\Android\android_key\careych
ow.keystore):
careychow
    [input] Please enter password for alias 'Carey':
careychow
   ......
-release-sign:
     [echo] Signing final apk...
  [signjar] Signing JAR: F:\workspace\eReader\bin\GAReader-release-unsigned.apk
to F:\workspace\eReader\bin\GAReader-release-unaligned.apk as Carey
  [signjar] 输入密钥库的密码短语:
 [zipalign] Running zip align on final apk...
     [echo] Release Package: F:\workspace\eReader\bin\GAReader-release.apk
[propertyfile] Updating property file: F:\workspace\eReader\bin\build.prop
[propertyfile] Updating property file: F:\workspace\eReader\bin\build.prop
[propertyfile] Updating property file: F:\workspace\eReader\bin\build.prop
[propertyfile] Updating property file: F:\workspace\eReader\bin\build.prop

-post-build:

release:

BUILD SUCCESSFUL
Total time: 1 minute 36 seconds

常见错误

  • 去除 proguard 的警告信息,尤其在自己引用第三方library的时候,代码混淆的过程中,proguard分析当前所有的类库,会警告有些类或者方法无法识别,因为这些都是第三方library自己编译的,我们无法再去找它所依赖的其他包,只需要配置忽略这些警告即可,方法如下:配置 proguard.cfg 文件,在文件的最后加上要忽略的类
  ......
-dontwarn java.awt.**,antlr.**,org.junit.**,jargs.gnu.**

总结

配置和启用的过程倒是不复杂,主要就是出现的一些版本兼容问题比较难解决,好了,内容就讲解这么多!

本文原始链接:http://blog.zhourunsheng.com/2012/06/android-%e9%85%8d%e7%bd%ae-ant-%e8%84%9a%e6%9c%ac%e4%b9%8b%e4%bb%a3%e7%a0%81%e6%b7%b7%e6%b7%86%e5%92%8c%e4%bc%98%e5%8c%96/(迁移后固定链接原样保留)

加入讨论

新评论 — 条

评论保存在本站自托管服务里,无需注册登录,填个昵称就能留言;不依赖任何第三方 Cookie 或账号。请尽量说点有用的 :)