为什么需要在应用程序中增加渠道信息?
Android应用的发布需要面对各种各样的市场,我们称之为渠道。有的时候,我们需要知道应用是从哪个渠道下载的。比如,我们可能需要统计哪些市场带来的用户量比较大。再比如,我们可能有一些盈利需要和具体的渠道进行分成。这些都是统计渠道的信息。
一般如何在应用中加入渠道信息?
为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同的包。一般可以在Manifest文件中加入渠道编号,而不直接写在代码中。这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编号,然后自动为该渠道打包。
Manifest文件支持Meta Data标签,建议使用这种自定义标签。例如下面的文件片段。
<?xml version="1.0"encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="X"
android:versionName="X.X.X"
package="com.XXX">
……
<application android:icon="@drawable/icon"
android:label="@string/app_name">
……
<meta-data android:name="CHANNEL"android:value="C_001"/>
</application>
</manifest>
|
在这段代码示例中,我们在Application节点下增加了一个meta-data标签,名称是CHANNEL,值是C_001,是我们规定的一个渠道的编号。
为不同的渠道打包,就要手工或者自动化修改C_001成为C_002、C_003等等其它我们定义的渠道编号,然后再打不同的包。
程序如何读取打包的渠道编号?
在程序代码中,可以读取Manifest文件中定义的meta-data。以下为代码实例。
public staticString getChannelCode(Context context) {
String code =getMetaData(context, "CHANNEL");
if(code !=null) {
returncode;
}
return"C_000";
}
private staticString getMetaData(Context context, String key) {
try{
ApplicationInfo ai = context.getPackageManager().getApplicationInfo(
context.getPackageName(), PackageManager.GET_META_DATA);
Object value = ai.metaData.get(key);
if(value !=null) {
returnvalue.toString();
}
}catch(Exception e) {
//
}
return null;
}
|
如何自动化打包过程?
我们想要自动化针对不同渠道打不同包的过程,有两种情况。一种是有源代码的情况,一种是没有源代码只有APK文件的情况。
有源代码的情况。
有源代码的情况比较简单。我们可以使用自动化脚本工具进行打包,比如使用Ant。
使用Ant打包,有两个关键问题:一个是要在Ant中支持For循环,以自动做多次打包动作;一个是如何能够在Ant中修改Manifest文件,以支持不同的市场。只要解决了这两个关键问题,配合Ant的基本功能,就能实现我们的要求了。
1. 在Ant中支持循环
在Ant的核心包里没有相关的For循环的Task,要下载相应的扩展包。可以使用开源的Ant-contrib包。
下载地址:http://ant-contrib.sourceforge.net/
下载完成后,把ant-contrib里的lib包复制到安装好的Ant库apache-ant-XXX\lib下面,就可以使用了。
具体如何使用,可以参考ant-contrib的官方网站。
2. 在Ant中修改Manifest文件
利用 Ant 扩展任务所提供的 <replaceRegExp> 任务,还可以实现基于正则表达式的替换。
例如,要将AndroidManifest.xml文件中的行首“C_001”字符串替换为“C_002”,可以使用如下Ant脚本:
<replaceregexp
file="AndroidManifest.xml"
byline="true"
match="C_001 "
replace="C_002"
/>
<replaceRegExp> 任务很强大,这只是一个简单的例子。
只有APK文件的情况。
如果没有源代码,只有APK文件,事情相对就稍微复杂一些了。我们知道有一个开源的APKTOOL,可以对APK文件进行反编译,或者重新打包。具体的请参考APKTOOL的官方文件。
有了APKTOOL的帮助,就可以有一个基本思路。
1. 先使用APKTOOL对APK文件进行反编译,反编译出来资源文件和AndroidManifest.xml文件。
2. 使用脚本代码修改AndroidManifest.xml文件中的渠道ID文本。
3. 使用APKTOOL重新打包成APK文件。
4. 使用jarsigner工具为APK文件签名。
只要反复重复2-4步骤,即可对不同的渠道打出不同的APK安装包。
根据这个思路,具体的实现就相对简单了。可以写成一个BAT脚本文件,也可以写成Java应用程序。
本文转自http://blog.csdn.net/arui319
这篇也是讲自动化打包
http://www.cnblogs.com/qianxudetianxia/archive/2012/07/04/2573687.html
分享到:
相关推荐
为什么需要在应用程序中增加渠道信息?Android应用的发布需要面对各种各样的市场,我们...这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编号,然后自动为该渠道打包。 Manifest文件支持Meta Da
在Android开发过程中,为了将应用分发到不同的市场或渠道,开发者通常需要为每个渠道创建一个带有特定标识的APK。手动处理这一过程既耗时又容易出错。"Android多渠道全自动打包发布工具"正是为了解决这个问题,它...
在Android应用开发中,多渠道打包是一个常见的需求,特别是在商业化分发和推广过程中。它允许开发者为不同的分发渠道创建定制的应用程序包(APK),每个渠道包含特定的渠道ID或者参数,以便追踪应用程序的来源和下载...
在Android应用打包的过程中,通常会在APK文件中嵌入一个渠道标识,这个标识用于区分不同的分发渠道。例如,我们可能需要为Google Play、华为应用市场、小米应用商店等创建不同的APK。在传统的打包方式中,这需要在...
在Android应用开发中,发布应用通常需要针对不同的市场或推广渠道进行定制,每个渠道对应一个唯一的标识,以便追踪应用的下载来源。批量渠道打包工具就是为了高效地完成这一任务而设计的。本文将深入探讨“android ...
Python作为一种强大的脚本语言,可以方便地实现自动化任务,包括Android应用的多渠道打包。以下将详细解释如何利用Python进行Android批量多渠道打包。 一、Python环境搭建 首先,你需要在你的系统(Windows、Linux...
在Android应用开发中,为了发布应用到不同的分发平台,如360手机助手、百度手机助手等,通常需要创建多个渠道包,每个渠道对应一个特定的推广标识。"Android-Android多渠道打包V2签名自动化脚本"是解决这个问题的一...
这通常通过构建脚本来实现,比如使用Gradle的Task或者Ant脚本,自动化处理所有配置和打包过程,大大提高工作效率。 5. **配置文件**:在项目中,可能会有一个或多个配置文件(如build.gradle、gradle.properties、...
在Android应用开发中,多渠道打包是一项非常重要的技术,它允许开发者为不同的分发渠道创建定制的apk,比如Google Play、应用宝、华为应用市场等。这样可以针对每个渠道进行特定的推广策略,如添加不同的广告跟踪...
在Android应用开发中,"多渠道打包"是一个关键的步骤,尤其对于像美团这样的大型应用,需要针对不同的推广渠道发布定制化的APK。这有助于跟踪各个渠道的效果,优化市场策略。"Android美团多渠道打包工具.zip"就是...
如果需要为大量渠道打包,可以编写一个脚本来循环执行这些命令,例如使用Python或Shell脚本。 此外,AntTest可能是用于演示如何使用Apache Ant工具进行自动化打包的项目。Ant是Java的一个构建工具,虽然在现代...
总之,使用Ant进行批量多渠道打包Android应用是一个高效的方法,它能够自动化繁琐的手动修改和打包过程,大大节省时间和精力。通过灵活的Ant脚本,你可以轻松地适应不同的市场和统计需求,为你的Android应用带来更...
在Android应用开发中,"多渠道打包"是一个关键的步骤,尤其对于那些需要在不同分发渠道发布应用的开发者来说。这个过程涉及到如何为每个不同的市场或者推广渠道创建定制的应用包,以便在安装时能够识别并追踪应用的...
在Android应用开发中,"渠道打包工具"是一个非常实用的辅助工具,特别是在大规模发布或推广时,需要针对不同的分发渠道进行定制化处理。本文将详细介绍"android渠道打包工具"的功能、用途及其重要性。 首先,这个...
通过这种批量构建渠道包的方法,Unity3D开发者可以极大地提高工作效率,节省在不同渠道打包时重复操作的时间。同时,这种自动化流程也有助于保持构建的一致性和准确性,降低了人为错误的可能性。
在Android应用开发中,"渠道打包"是一种常见的需求,它允许开发者为不同的发布渠道(如应用市场、广告网络等)创建定制化的apk。这有助于跟踪应用的安装来源,进行数据分析和精细化运营。以下是对"android渠道打包...
在Android应用开发中,"友盟多渠道打包 Android Apk" 是一个常见的需求,尤其对于那些需要在多个分发渠道发布应用的开发者来说。友盟(Umeng)是中国领先的移动互联网开放平台,提供了多种服务,包括数据分析、推送...
4. 自动化脚本:为了简化多渠道打包的过程,开发者通常会编写自动化脚本,这些脚本会替换特定的渠道标识,并自动执行构建任务。 二、Android应用升级 1. OTA(Over-the-Air)升级:这是最常见的Android应用升级...