现在的位置: 首页 > 移动开发> 正文
Android 配置 Ant 脚本之代码混淆和优化
2012年06月20日 移动开发 暂无评论 ⁄ 被围观 3,849+

本文的目的是介绍怎么样配置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.**
  • 解决签名错误 INSTALL_PARSE_FAILED_NO_CERTIFICATES
    目前在JDK7的版本和ant1.8.4会出现这个问题,如果不指明所使用的签名算法,则APK就无法正确签名,在安装的过程中就会出现如上的错误信息,解决办法就是在build.xml中指明签名算法。
    还有另外的解决方法,可参照如下文章:

总结

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

给我留言

留言无头像?


×
腾讯微博