ant实现批量打包android应用
2015-08-17 17:48
501 查看
很多的应用中需要加上应用推广的统计,如果一个一个的去生成不同渠道包的应用,效率低不说,还有可能不小心弄错了分发渠道,使用ant可以批量生成应用。
一、添加渠道包信息
为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同的包。一般可以在Manifest文件中加入渠道编号,而不直接写在代码中。这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编号,然后自动为该渠道打包。
Manifest文件支持Meta Data标签,建议使用这种自定义标签。例如下面的文件片段。
[html] view
plaincopyprint?
<meta-data android:value="000000" android:name="CHANNEL"/>
二、渠道包读取
[java] view
plaincopyprint?
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;
}
三、自动打包实现
Ant编译android程序 简单介绍了使用ant命令打包android程序,实现批量打包需要的加一个类似于for循环的功能即可,在Ant的核心包里没有相关的For循环的Task,要下载相应的扩展包。可以使用开源的Ant-contrib包。下载地址:http://ant-contrib.sourceforge.net/
。下载后的解压得到的jar文件放到ant的lib目录。
在build.xml中增加如下代码就可以实现批量打包:
[html] view
plaincopyprint?
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文件增加:
taskdef 声明需要放到较前位置,因为if condition也会用到此声明。
build.properties文件增加:
[html] view
plaincopyprint?
market_channels=000000,012345
app_version=1.2.1
market名称用逗号分隔
执行ant deploy即可。
一、添加渠道包信息
为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同的包。一般可以在Manifest文件中加入渠道编号,而不直接写在代码中。这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编号,然后自动为该渠道打包。
Manifest文件支持Meta Data标签,建议使用这种自定义标签。例如下面的文件片段。
[html] view
plaincopyprint?
<meta-data android:value="000000" android:name="CHANNEL"/>
二、渠道包读取
[java] view
plaincopyprint?
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;
}
三、自动打包实现
Ant编译android程序 简单介绍了使用ant命令打包android程序,实现批量打包需要的加一个类似于for循环的功能即可,在Ant的核心包里没有相关的For循环的Task,要下载相应的扩展包。可以使用开源的Ant-contrib包。下载地址:http://ant-contrib.sourceforge.net/
。下载后的解压得到的jar文件放到ant的lib目录。
在build.xml中增加如下代码就可以实现批量打包:
[html] view
plaincopyprint?
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文件增加:
taskdef 声明需要放到较前位置,因为if condition也会用到此声明。
build.properties文件增加:
[html] view
plaincopyprint?
market_channels=000000,012345
app_version=1.2.1
market名称用逗号分隔
执行ant deploy即可。
相关文章推荐
- JavaScript 组件之旅(三):用 Ant 构建组件
- 提升Android应用视觉吸引效果的10个UI设计技巧
- 基于Android"今日事今日毕"的使用介绍
- 使用YUI+Ant 实现JS CSS压缩
- ubuntu 14.04 安装 apache ant教程
- Windows下apache ant安装、环境变量配置教程
- java ant 配置及构建项目图文教程
- ant使用指南详细入门教程
- ANT集成SVNANT访问SVN(Subversion)
- 【笔记】试玩 cocos2d-x-3.0beta on android
- 使用Ant构建SSH项目(Intellij IDEA版)
- Android ANT多渠道打包
- ant 编译报 Cannot load 63-bit SWT libraries on 32-...
- 使用Ant构建简单项目
- Android项目导出jar包的小技巧
- 开发人员和设计师应该安装的10个Android应用
- Ant编译android,并Proguard代码混淆,v4混淆配置
- Ant基础知识
- Ant小总结