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.**
- 解決簽名錯誤 INSTALL_PARSE_FAILED_NO_CERTIFICATES
目前在JDK7的版本和ant1.8.4會出現這個問題,如果不指明所使用的簽名演算法,則APK就無法正確簽名,在安裝的過程中就會出現如上的錯誤資訊,解決辦法就是在build.xml中指明簽名演算法。
還有另外的解決方法,可參照如下文章:
總結
配置和啟用的過程倒是不復雜,主要就是出現的一些版本相容問題比較難解決,好了,內容就講解這麼多!
相關文章
- Android程式碼混淆&元件化混淆方案Android元件化
- Android自動打包、簽名、優化、上傳ANT指令碼Android優化指令碼
- 程式碼安全之程式碼混淆及加固(Android)?Android
- 鴻蒙程式碼配置混淆鴻蒙
- Android程式碼混淆Android
- Android程式碼混淆配置(Proguard檔案解析)Android
- Android反編譯和程式碼混淆Android編譯
- Android 程式碼優化Android優化
- Flutter 程式碼混淆 混淆Dart程式碼FlutterDart
- Android 程式碼混淆規則Android
- Android Studio 程式碼混淆Android
- Android 專案程式碼混淆Android
- android 混淆規則作用,Android程式碼混淆詳解Android
- Android效能優化——程式碼優化(一)Android優化
- Android開發優化之——從程式碼角度進行優化Android優化
- Android Note - 程式碼優化Android優化
- Window下采用ant 指令碼構建Android自動化編譯指令碼Android編譯
- Android程式碼混淆的實踐Android
- 【程式碼混淆】react-native 程式碼混淆React
- 通過ant指令碼編譯打包android工程指令碼編譯Android
- Vue 應用程式效能最佳化:程式碼壓縮、加密和混淆配置詳解Vue加密
- Android 高階混淆和程式碼保護技術Android
- Android程式碼優化十九條Android優化
- 程式碼混淆工具ipaguard:如何使用ipaguard保護和混淆iOS應用程式程式碼iOS
- 讀懂 Android 中的程式碼混淆Android
- Android Studio實現程式碼混淆Android
- ant指令碼實現的Android自動編譯指令碼Android編譯
- ant指令碼呼叫.bat檔案指令碼BAT
- 學習Ant編譯指令碼編譯指令碼
- ANT批量執行Jmeter指令碼JMeter指令碼
- 用Ant構建指令碼(2)指令碼
- 用Ant構建指令碼(1)指令碼
- 用Ant構建指令碼(4)指令碼
- js程式碼混淆JS
- Java學習之程式碼優化Java優化
- 案例分析之JavaScript程式碼優化JavaScript優化
- ios加固,ios程式碼混淆,ios程式碼混淆工具, iOS原始碼混淆使用說明詳解iOS原始碼
- Android Studio 程式碼混淆注意問題Android