Android ANT 多渠道打包解决方案

<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" />

   

  <!--打完  收工 -->


若是使用的是Google集成的android  Eclipse,其中包含的有ANT插件但是eclipse中没有显示出来则需要使用命令行来使其出现;

     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的值是  “&lt;dir&gt;crunch:!.svn:!.git:.*:&lt;dir&gt;_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~”

              这样就解决了依赖吧无法打进去的问题;


最后附上资源下载地址:http://download.csdn.net/detail/li352558693/8314529

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值