Android-Ant自動編譯打包android項目 -- 2 ----簽名與渠道包

上篇介紹了怎麼使用ant自動編譯打包現有的android項目,這篇將繼續介紹若是如何在ant打包應用的時候加入簽名信息以及自動打包渠道包。html

1. 加入簽名信息:

在項目的根目錄下建一個ant.properties文件,輸入以下內容,其中keystore密碼和alias密碼能夠不指定(防泄漏),那麼在命令執行的過程當中會要求你輸入。android

 

[html]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
 
  1. #keystore的路徑,必須使用正斜槓  
  2. key.store=E:/wp_android_sample/me.key  
  3. #keystore的密碼  
  4. #key.store.password=*****  
  5. #alias名  
  6. key.alias=me  
  7. #alias密碼  
  8. #key.alias.password=******       

在項目根目錄下運行 ant release 命令就會幫你生成一個通過簽名和aligned的apk,生成的apk(your_project_name-release.apk)在bin目錄下正則表達式

 

 

2. 自動打包渠道包:

 實現批量循環打包須要一個相似於for循環的功能,在Ant的核心包裏沒有相關的For循環的Task,即不支持for循環,可是ant支持第三方擴展包,以支持更多的其餘功能。express

因而咱們要下載相應的支持for循環的擴展包。能夠使用開源的Ant-contrib包。下載地址:http://ant-contrib.sourceforge.net/  。ui

下載後的解壓獲得的jar文件放到ant的lib目錄。接下來咱們就能夠打包渠道包了,具體作法是:spa

(1)首先在ant.properties文件中增長屬性 market_channels (渠道列表,以逗號分割),version(應用程序版本名).net

 
  1. #渠道市場列表  
  2. market_channels=91,360,wandoujia,baidu  
  3. #版本號  
  4. version=1.2.1  

 

(2)在咱們項目的build.xml中加入以下代碼:code

 

 
  1. <!-- 渠道包打包腳本  ant deploy-->  
  2.   
  3. <taskdef resource="net/sf/antcontrib/antcontrib.properties">  
  4.     <classpath>  
  5.         <pathelement location="lib/ant-contrib-1.0b3.jar"/>  
  6.     </classpath>  
  7. </taskdef>  
  8.   
  9. <target name="deploy">  
  10.    <foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=",">  
  11.    </foreach>  
  12. </target>  
  13.   
  14. <target name="modify_manifest">  
  15.     <!-- 加上時間戳 -->
  16.     <tstampprefix="build.">
  17.         <formatproperty="TimeSign" pattern="yyyyMMddHHmm"/>
  18.     </tstamp>
  19.     <replaceregexp flags="g" byline="false">  
  20.         <!-- 匹配的內容是 android:value="*****" android:name="UMENG_CHANNEL" -->  
  21.         <regexp pattern='android:value="(.*)" android:name="UMENG_CHANNEL"' />  
  22.         <!-- 匹配以後將其替換爲 android:value="渠道名" android:name="UMENG_CHANNEL" -->  
  23.         <substitution expression='android:value="${channel}" android:name="UMENG_CHANNEL"' />    
  24.         <!-- 正則表達式須要匹配的文件爲AndroidManifest.xml -->  
  25.         <fileset dir="" includes="AndroidManifest.xml" />  
  26.     </replaceregexp>  
  27.     <property name="out.release.file" location="${out.absolute.dir}/${ant.project.name}_${channel}.apk" />  
  28.     <!--包 -->  
  29.     <antcall target="release" />  
  30.     <!--輸出渠道包到bin/out目錄下 -->  
  31.     <copy tofile="${out.absolute.dir}/out/${ant.project.name}v${version}-${channel}.apk" file="bin/${ant.project.name}-release.apk"/>  
  32. </target>  


在項目根目錄下運行 ant clean 無誤後再運行 ant deploy 命令就會幫你各個渠道的簽名包了(爲了全程能夠自動執行,ant.properties文件中的keystore的密碼能夠指定,這樣在執行過程當中就不須要手動輸入密碼了),在bin目錄的out目錄下。regexp

相關文章
相關標籤/搜索