Android学习 - ant批量打包
来源:互联网 发布:阿里云ecs vpn 编辑:程序博客网 时间:2024/05/17 15:41
很多的应用中需要加上应用推广的统计,如果一个一个的去生成不同渠道包的应用,效率低不说,还有可能不小心弄错了分发渠道,使用ant可以批量生成应用。
一、添加渠道包信息
为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同的包。一般可以在Manifest文件中加入渠道编号,而不直接写在代码中。这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编号,然后自动为该渠道打包。
Manifest文件支持Meta Data标签,建议使用这种自定义标签。例如下面的文件片段。
<meta-data android:value="000000" android:name="CHANNEL"/>
二、渠道包读取
public static String getChanel(Context ctx) {String CHANNELID = "000000";try {ApplicationInfo ai = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);Object value = ai.metaData.get("");if (value != null) {CHANNELID = value.toString();}} catch (Exception e) {//}return CHANNELID;}
三、自动打包实现
这一篇主要做了创建android项目、update已存在项目、ant编译项目。
1、准备ant
ant 官网可下载
http://ant.apache.org/
ant 环境配置:
1)、解压ant的包到本地目录。
2)、在环境变量中设置ANT_HOME,值为你的安装目录。
3)、把ANT_HOME/bin加到你系统环境的path。
2、使用ant
1)、首先需要检查一下android-sdk的环境换量是否添加到了path中。这样可以在任意目录下执行android命令,不然则要切换到 android-sdk\tools目录下。
2)、使用android create创建项目
参数说明:
-k /--package 为命名空间(包名)-a /--name 工程名
-p /--path 项目 -t 为目标平台的版本编号
C:\Documents and Settings\Administrator>android create project -k com.android.Tank -a Tank -t 4 -p F:\tank
列出不同版本平台的对应id编号 android.bat list targets /androidlist
C:\Documents and Settings\Administrator>android.bat list targets
3)、android update更新现有项目
对已经存在的android工程,我们可以update下(修改平台的版本),这样会自动添加build.xml等ant的配置文件。
C:\Documents and Settings\Administrator>android update project --name Tank -t 11 -p F:\tank
4)、ant 参数介绍
* debug:带调试用签名的构建
* release:构建应用程序,生成的apk必须签名才可以发布
* install:安装调试构建的包到运行着的模拟器或者设备;
* reinstall
* uninstall
使用ant命令时可以进入到项目目录中,或者
ant debug Buildfile:E:\MyLiB\Android\AndroidAnt\MyBoardCastReciver\build.xml
简单介绍了使用ant命令打包android程序,实现批量打包需要的加一个类似于for循环的功能即可,在Ant的核心包里没有相关的For循环的Task,要下载相应的扩展包。可以使用开源的Ant-contrib包。下载地址:http://ant-contrib.sourceforge.net/。下载后的解压得到的jar文件放到ant的lib目录。
在build.xml中增加如下代码就可以实现批量打包:
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> <classpath> <pathelement location="lib/ant-contrib-1.0b3.jar"/> </classpath></taskdef> <target name="deploy"> <foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=","> </foreach> </target><target name="modify_manifest"> <replaceregexp flags="g" byline="false"> <regexp pattern="android:value="(.*)" android:name="CHANNEL"" /> <substitution expression="android:value="${channel}" android:name="CHANNEL"" /> <fileset dir="" includes="AndroidManifest.xml" /> </replaceregexp> <property name="out.release.file" location="${out.absolute.dir}/${ant.project.name}_${channel}_${app_version}.apk" /> <antcall target="release" /></target>
taskdef:声明需要放到较前位置,因为if condition也会用到此声明。
build.properties:文件增加
market_channels=000000,012345app_version=1.2.1
market名称用逗号分隔,执行ant deploy即可。
- Android学习 - ant批量打包
- android ant批量打包
- android ant 批量打包
- android ant批量打包
- Android:Ant 批量多渠道打包
- android Ant 批量多渠道打包!
- android ant 多渠道批量打包
- android Ant 批量多渠道打包
- Android使用Ant批量打包
- Android 使用 Ant 批量打包
- android ant 多渠道批量打包
- Android ant 批量打包研究
- Android使用Ant批量打包
- android Ant 批量多渠道打包
- Android采用Ant批量打包
- Android批量打包,利用Ant打包
- Android批量打包,利用Ant打包
- android ant 编译打包 和批量打包
- Ubuntu系统下的终端程序:tilda, yakuake, terminator
- oracle分页查询sql原理与语句
- POI excel 复制模版sheet(包括打印设置)
- 超碰在线视频网站源码,AVS超碰源码,国外视频**脚本搭建教程
- ICCAVR编译报错 !E <library>(197): area 'bss' not large enough
- Android学习 - ant批量打包
- 华为软件大赛之德州扑克
- Android 向ListView里动态添加内容
- LINUX --- 中断 --- INT 0x10
- MySQL性能调优
- Oracle学习笔记--grouping/grouping_id
- c++多继承
- AVL树的旋转操作 图解 最详细
- 大数据:CDH和Cloudera Express的介绍