Android ANT 多渠道打包解決方案
阿新 • • 發佈:2018-12-30
若是使用的是Google整合的android Eclipse,其中包含的有ANT外掛但是eclipse中沒有顯示出來則需要使用命令列來使其出現;<span style="font-size:18px;"><!--Android 分渠道打包步驟--> <!--打包之前請確定--> ANDROID_HOME 環境變數 即ANDROID_SDK的安裝路徑 如:F:\adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\sdk <!-- 1,在AndroidManifest.xml檔案中新增以下程式碼 --> <meta-data android:name="qudao" android:value="anzhuoshichang" /> <!-- 2,將ant-contrib-1.0b3.jar檔案copy到 Android SDK/tools/lib (android sdk路徑)資料夾下--> 新增ANT的環境變數 如:F:\資料\ANT\apache-ant-1.9.4-bin; <!-- 3,控制檯cmd命令--> <sdk路徑>/android update project -p <要打包專案的絕對路徑> -t <要打包專案的API版本 <project.properties檔案中target對應的值>> 如:E:/android-sdk/tools/android update project -p D:\workspaceforandroid\HelloWorld -t android-17 <!-- 4,執行完畢之後重新整理專案 會發現專案的根目錄下多了兩個檔案:build.xml和local.properties --> <!-- 5,手動建立與build同級目錄的檔案 ant.properties並新增以下程式碼--> key.store=<!--您簽名檔案的絕對路徑 如 C:\Users\Administrator\Desktop\test.keystore --> key.alias=<!-- 證書名稱 --> key.store.password=<!-- 金鑰口令--> key.alias.password=<!-- 證書密碼--> market_channels=<!--渠道名稱集合,以" , "隔開,後面有用到。 如:anzhuoshichang,jifengshichang,baiduyingyongzhongxin 或者是1.0.1.0001,1.0.1.0002,1.0.1.0003。。。。。--> app_version=1.0.2<!-- 版本顯示--> <!-- 6,修改build.xml檔案 在build檔案下面新增以下程式碼 --> <!-- 需要改動的地方 values值對應打包apk輸出的資料夾 即打包完成後apk檔案的放置處 --> <property name="out.unaligned.dir" value="C:/Users/Administrator/Desktop/HelloWorld_${app_version}/" /> <mkdir dir="${out.unaligned.dir}" /> <target name="modify_update_file"> <echo> make channel ${channel}</echo> <replaceregexp file="AndroidManifest.xml" match='abcdefg'//要替換的欄位值即meta_data節點的value對應的值,打包時會把該預設值修改成ant.proterties檔案中的渠道版本名稱 ---------需要修改的地方 replace='${channel}' byline="false" encoding="utf-8" /> <!--打包apk放置路徑及個渠道名稱 HelloWorld_版本號_渠道名稱_android.apk --> <property name="out.unaligned.file" location="${out.unaligned.dir}/HelloWorld_${app_version}_${channel}_android.apk"/> </target> <target name="make_one_channels" depends="savemanifest,modify_update_file,release,replacemanifest,deletebin" description="description"> </target> <target name="replacemanifest"> <echo>replacemanifest</echo> <delete file="${basedir}\AndroidManifest.xml"/> <copy file="..\temp\build\META-INF\AndroidManifest.xml" todir="${basedir}" encoding="utf-8"/> </target> <target name="savemanifest"> <echo>savemanifest</echo> <copy file="${basedir}\AndroidManifest.xml" todir="..\temp\build\META-INF" encoding="utf-8" /> </target> <target name="deletebin"> <delete dir="${basedir}\bin" /> </target> <!-- classpath的值為ant迴圈類庫 ant-contrib-1.0b3.jar檔案的絕對路徑--> //-------------需要修改的地方 <taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach" classpath="E:\\android-sdk\\android-sdk\\tools\\lib\\ant-contrib-1.0b3.jar" /> <target name="make_channels"> <foreach target="make_one_channels" list="${market_channels}" delimiter="," param="channel"> </foreach> </target> <!--7,開始打包 --> <在eclipse中右鍵build檔案選擇 run as 選擇 external Tools Configurations進入配置 點開Targets選項 只選擇 make_channels選項,然後 run > <!-- 8,程式碼獲取meta_data節點中的渠道版本名稱--> PackageInfo p = getPackageManager().getPackageInfo( getPackageName(),PackageManager.GET_META_DATA); Object value =(Object)p.applicationInfo.metaData.get("test");//test為meta_data 節點中的key值 結果value即為該渠道的版本名稱 如1.0.1.0001 如: <meta-data android:name="test" android:value="abcdefg" /> <!--打完 收工 -->
1,cd eclipse的安裝目錄
2, eclipse -application org.eclipse.equinox.p2.director -repository http://download.eclipse.org/releases/juno -installIU org.eclipse.ant.ui
Installing org.eclipse.ant.ui 3.5.400.v20130514-1341.
3,執行完之後eclipse會重啟,如果還是沒有出現,重啟下電腦試試(前提是eclipse\plugins下真的有ant外掛哦!
若是專案有外部依賴包 ,則需修改SDK/tools/ant/build.xml 檔案 ;
name為aapt.ignore.assets
value的值是 “<dir>crunch:!.svn:!.git:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~”
這樣就解決了依賴吧無法打進去的問題;