[Ant自动打包] 修改渠道打包

参考:http://www.stay4it.com/?p=284


一:准备工作


1.下载Ant  点击下载

2.下载 ant-contrib-1.0b3.jar   点击下载 把下载得到的jar包放到ant下的lib文件夹下


二:开始

1.首先要生成build.xml

    命令窗口导航到工程目录,执行 android update project --name 工程名称--target 1 --path ./

  稍微解释一下
--name 后面的是你的工程的名字

--target 指定项目的Android版本对应的id  如果不知道的话,可以先执行 android list targets来查看

--path  指定项目路径

  执行完后刷新一下项目,你的项目就会添加了build.xml,local.properties,

   其实这个时候你就已经可以ant debug或者ant release 进行打包了,只不过还没改渠道号而已

如果要用ant release,那么你的key的就要准备好

在ant.properties里对key进行声明

 key.store=xxx.keystore
key.store.password=xxxx
key.alias.password=xxxx
key.alias=\u53F8\u9A6C\u98DE\u9C7C
proguard.config=proguard-project.txt

第一行的是签名的路径


如果没有可以用命令的方式新建一个工程,从那个工程拷贝过来

android create project -p ndkhello2  -n ndkhello2 -t android-10 -k com.droider.ndkhello2 -a MyActivity

 -n --name    : 工程明朝.
  -t --target  : 工程版本对应的id
  -p --path    :工程位置
  -k --package :包名
  -a --activity: 启动activity

2.我们打开build.xml看看

有一行:

<import file="custom_rules.xml" optional="true" />

import了一个custom_rules.xml,这个在自己project的根目录是没有的,如果你想在打包前做些额外的操作,比如对渠道的修改,就自己创建一个custom_rules.xml在根目录,这样当你编译的时候会去执行custom_rules里的操作

<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules" >
<!-- 声明ant loop ,这里直接用ant的循环功能,批处理什么的又要多写代码,而且我也不熟 
    <taskdef resource="net/sf/antcontrib/antcontrib.properties" >
        <classpath>
            <pathelement location="lib/ant-contrib-1.0b3.jar" />
        </classpath>
    </taskdef>
     -->
      <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="lib/ant-contrib-1.0b3.jar" />
        </classpath>
    </taskdef>
<!-- 这里相当于一个方法把,(表示ant不会,只能看懂= =) ,以后可以用命令行 ant deploy 来表示批量打包 -->
<!-- ${market_channels} 要在local.properties里声明,并用,来分隔你要打包的channel名 -->
<!-- 比如我的local.properties里是这样写的   market_channels=Google,Gfan,AnZhi,MuMayi -->
    <target name="deploy" >
        <foreach
            delimiter=","
            list="${market_channels}"
            param="channel"
            target="modify_manifest" >
        </foreach>
    </target>
<!-- 修改manifest.xml里的渠道名,如果你要改其他文件,举一反三把 -->
<!-- regexp pattern是正则匹配,这里双引号要用&quot;而不是\ -->
<!-- substitution expression 是你要替换的的channel名-->
<!-- 打包完毕后要把apk移动到一个指定的目录把,你可以在sdk/tools/ant/build.xml搜下out.final.file这个property在哪用到的-->
<!-- <property name="out.final.file" location="${apk.dir}/XXX_{channel}.apk" />  ${apk.dir}表示你要指定的apk目录 XXX表示你要定义apk名和${channel}渠道号-->
<!-- <antcall target="clean" /> <antcall target="release" /> release之前要调下clean,不然以后改的channel名不生效,你懂得-->
    <target name="modify_manifest" >
       <replaceregexp flags="g" byline="false">  
    <regexp pattern="android:value=&quot;(.*)&quot; android:name=&quot;UMENG_CHANNEL&quot;" />  
    <substitution expression="android:value=&quot;${channel}&quot; android:name=&quot;UMENG_CHANNEL&quot;" />  
           <fileset
                dir=""
                includes="AndroidManifest.xml" />
        </replaceregexp>
        <property
            name="out.final.file"
            location="./syb_${channel}.apk" />
        <antcall target="clean" />
        <antcall target="release" />
    </target>
</project>


3.开始打包

   ant deploy


     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值