android 使用ANT批量打包apk步驟
一、 到apache官網下載apache-ant,截止2014年12月10日最新版本是1.9.4.
下載地址:http://ant.apache.org/
file:///C:/Users/xinyuli/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
選擇上圖所示項
二、 配置環境變數(如果已經配置過ANT、Android、JAVA環境變數,可略過此步驟):
1、 配置ANT環境變數
(1)在系統環境變數中增加ANT_HOME,我的ANT解壓後放在F:\apache-ant-1.9.4,環境變數值也就是這個地址,根據你放的地方不同而不同;
(2)在path環境變數中加入
%ANT_HOME%\bin;%ANT_HOME%\lib;
注意用與之前的內容用英文分號分割;
配置完成後在命令列下輸入ant回車,看到以下內容就表示ANT環境變數配置成功了:
file:///C:/Users/xinyuli/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
2、 配置Android-SDK環境變數
(1) 在系統環境變數中增加ANDROID_HOME,值是你的Android-SDK存放的地址,我的在
F:\ Android-SDK;
(2) 在path環境變數中增加
%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
以便我們可以正常使用adt工具和SDK的ant工具。梗塞完成後在命令列輸入adt,出現Android相關提示資訊說明android環境變數配置成功;
3、 配置JAVA環境變數
(1) 在系統環境變數中增加JAVA_HOME,值是你安裝JDK的路徑,我的JDK安裝在
D:\Program Files\Java\jdk1.7.0_15;
(2) 建立CLASSPATH系統變數,值為.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar,注意開頭是英文的點和分號;
(3) 在path中增加
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
配置完成後在命令列輸入java,出現JAVA相關提示說明JAVA環境變數配置成功。
三、 新增ant-contrib第三方jar包
因為要實現自動迴圈打包,而ant本身不支援foreach迴圈,需要引入第三方jar包,下載ant-contrib-1.0b3.jar之後把它放到ant所在目錄的lib目錄下,例如我的在F:\ apache-ant-1.9.4\lib,然後要進行關鍵的一步:右鍵點選該jar檔案à選擇“開啟方式”àWinRAR壓縮檔案管理器,依次開啟net/sf/antcontrib/antcontrib.properties,看到以下這一行:
file:///C:/Users/xinyuli/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
然後用#註釋掉if=net.sf.antcontrib.logic.IfTask這一行,這是因為ant-contrib中的if語句會與Android-SDK自帶的if語句衝突,導致報錯if doesn't support the "condition"attribute,所以我們這裡要註釋掉ant-contrib中的if語句,只使用它的foreach語句。至此ant工具就已經全部配置完成。
四、 修改AndroidManefest.xml檔案
開啟我們要打包的工程的AndroidManifest.xml檔案,去掉裡面的中文註釋,可以用英文註釋,但是不要使用中文,否則會報錯,把<meta-data android:value="15"android:name="UMENG_CHANNEL" />放到一行上顯示,不要換行。至此AndroidManifest.xml檔案修改完畢。
五、 生成build.xml檔案與local.properties檔案
如果專案關聯了Library,必須首先在Library專案中生成build.xml檔案和local.properties檔案,方法是:開啟cmd à cd到專案所在目錄 à 執行androidupdate lib-project -p ./
執行完成後會提示生成相應的檔案,這時開啟local.properties檔案可以看到sdk.dir=安卓SDK所在目錄,如果為空說明Android環境變數配置不正確,可以手動填入SDK所在目錄,如F:\\Android-SDK,注意用兩個反斜槓,以實現轉義字元。
如果關聯了多個Library,請在每個Library中執行相應命令;
最後cd到主工程所在目錄,執行
android update project --name 工程名稱 -p ./--subprojects
同樣提示生成build.xml和local.properties檔案,如果沒有關聯Library則只需執行
android update project --name 工程名稱
即可,至此自動生成檔案步驟結束。
六、 建立ant.properties檔案
在主工程所在目錄新建ant.properties檔案,裡邊填入:
#keystore所在路徑,注意路徑用正斜槓,不要加雙引號
key.store=F:/kugou.keystore
#keystore密碼
key.store.password=xxxxx
#keystore別名
key.alias=myalias
#別名密碼
key.alias.password=xxxxx
#專案版本號
app_version=1.3.2
#UMENG渠道名稱,有些專案渠道名稱用英文字母,有些用數字,用英文逗號隔開
market_channels=2,3,4,5,6
這裡注意:keystore別名必須是英文,不能是中文,否則會報錯,如果已經寫成了中文,請在cmd中使用
keytool-changealias -keystore keystore名稱 -alias 原來的別名 -destalias 新的別名
命令修改keystore別名。至此ant.properties檔案建立成功。
七、 修改build.xml檔案
這裡所說的build.xml檔案指的主專案中我們用命令列生成的那個build.xml,在裡邊加入以下內容:
<!-- 渠道包打包指令碼 antdeploy -->
<!-- 引入第三方jar包 -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!—定義deploy命令 -->
<target name="deploy">
<!—呼叫foreach迴圈 -->
<foreachtarget="modify_manifest"list="${market_channels}"param="channel"delimiter=",">
</foreach>
</target>
<!—定義修改manifest的target -->
<target name="modify_manifest">
<replaceregexp flags="g" byline="false">
<regexp pattern='android:value="(.*)" android:name="UMENG_CHANNEL"'/>
<substitution expression='android:value="${channel}" android:name="UMENG_CHANNEL"'/>
<filesetdir=""includes="AndroidManifest.xml"/>
</replaceregexp>
<property name="out.release.file" location="${out.absolute.dir}/${ant.project.name}_${channel}.apk"/>
<!—呼叫ant release命令 -->
<antcall target="release" />
<!—定義apk檔案儲存路徑及檔名 -->
<copy tofile="${out.absolute.dir}/out/${ant.project.name}v${app_version}-${channel}.apk"file="bin/${ant.project.name}-release.apk"/>
</target>
其中用黃色背景標出來的最終生成的apk檔案的檔名格式,可以按照需要修改,至此build.xml檔案修改完成。
八、 批量打包
進入cmd視窗,cd到專案所以目錄,執行ant deploy就可以實現批量打包,生成的apk檔案放在工程目錄下bin下的out目錄中。
九、 常見錯誤:
1、 if doesn't support the "condition"attribute錯誤:沒有修改ant-contrib-1.0b3.jar檔案,請按第三步修改ant-contrib-1.0b3.jar檔案;
2、 找不到?。???? keystroe檔案:keystore檔名稱或路徑包含中文,或者別名包含中文,請按第六步修改keystore檔案別名;
3、找不到src目錄:所有Library與主程式的原始碼都要寫在srcSource Folder中
其餘錯誤可以試執行ant clean命令或者ant release、ant debug生成單個apk檔案,然後觀察報錯資訊進行解決。
參考文獻:http://www.cnblogs.com/tt_mc/p/3891546.html
轉自:http://www.eoeandroid.com/thread-557178-1-1.html
相關文章
- Android使用Ant進行apk多渠道打包AndroidAPK
- android Ant 批量多渠道打包 總結!Android
- Android 自動編譯、打包生成apk檔案 3 - 使用SDK Ant方式Android編譯APK
- 使用ANT打包Android應用Android
- React Native安卓專案打包釋出APK步驟React Native安卓APK
- Android Apk 打包AndroidAPK
- react-native android 打包步驟ReactAndroid
- Android APK打包流程AndroidAPK
- Flutter 打包 android端 apkFlutterAndroidAPK
- Cordova 打包 apk,html 打包 apkAPKHTML
- 簽名打包Android版apkAndroidAPK
- Android開發 —— apk打包流程AndroidAPK
- 通過Ant將Android project編譯打包成APK檔案並安裝到手機AndroidProject編譯APK
- AndroidStudio打包步驟Android
- Android ant修改包名打包 (轉)Android
- Android Apk反編譯系列教程(二)APK重打包AndroidAPK編譯
- Android Studio打包專案:APKAndroidAPK
- Android自定義打包apk名稱AndroidAPK
- Android使用Ant自動編譯簽名打包詳解Android編譯
- java打包相關的步驟Java
- Android Studio打包apk,aar,jar包AndroidAPKJAR
- 動態庫so打包到android apkAndroidAPK
- Jenkins打包node專案步驟Jenkins
- 混合app打包步驟(本地+雲端)HybirdApp本地環境配置步驟APP
- Flutter 38: 圖解 Android 打包 APK 檔案Flutter圖解AndroidAPK
- Android 生成簽名apk與多渠道打包AndroidAPK
- 轉[Android]APK打包過程詳解(一)AndroidAPK
- 轉[Android]APK打包過程詳解(二)AndroidAPK
- Android開發把專案打包成apkAndroidAPK
- Ant打包例項
- flutter常見問題【3】:Flutter 使用Android studio 打包生成apkFlutterAndroidAPK
- Flutter的apk打包FlutterAPK
- 通過ant指令碼編譯打包android工程指令碼編譯Android
- 批量打patch (adpatch) 的設定步驟
- ant打包部署web工程Web
- ReactNative學習筆記十六之Android打包ApkReact筆記AndroidAPK
- uni-app&H5&Android混合開發二 || 使用Android Studio打包應用APKAPPH5AndroidAPK
- 使用adb如何批量給裝置安裝apkAPK