Android应用开发完之后一般都要上传市场。发布的时候需要面对各种各样的市场,我们称之为渠道。既然上传市场,我们就可能需要每个市场的一些数据分析:比如,哪个市场用户下载量比较大?有时候,我们还需要知道应用是从哪个渠道下载的。再比如,我们可能有一些盈利需要和具体的渠道进行分成。这些都是统计渠道的信息。


如何在应用中加入渠道信息?

为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同的包。一般可以在Manifest文件中加入渠道编号,而不直接写在代码中。这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编号,然后自动为该渠道打包。

Manifest文件支持MetaData标签,建议使用这种自定义标签。例如下面的文件片段。

<?xmlversion=“1.0″encoding=“utf-8″?>

<manifestxmlns:android=“http://schemas.android.com/apk/res/android”

android:versionCode=“X”

android:versionName=“X.X.X”

package=“com.XXX”>

……

<applicationandroid:icon=“@drawable/icon”

android:label=“@string/app_name”>

……

<meta-dataandroid:name=“CHANNEL”android:value=“C_001″/>

</application>

</manifest>

在这段代码示例中,我们在Application节点下增加了一个meta-data标签,名称是CHANNEL,值是C_001,是我们规定的一个渠道的编号。

为不同的渠道打包,就要手工或者自动化修改C_001成为C_002、C_003等等其它我们定义的渠道编号,然后再打不同的包。


程序如何读取打包的渠道编号?

在程序代码中,可以读取Manifest文件中定义的meta-data。以下为代码实例。

publicstaticStringgetChannelCode(Contextcontext){

Stringcode=getMetaData(context,“CHANNEL”);

if(code!=null){

returncode;

}

return“C_000″;

}

privatestaticStringgetMetaData(Contextcontext,Stringkey){

try{

ApplicationInfoai=context.getPackageManager().getApplicationInfo(

context.getPackageName(),PackageManager.GET_META_DATA);

Objectvalue=ai.metaData.get(key);

if(value!=null){

returnvalue.toString();

}

}catch(Exceptione){

//

}

returnnull;

}

如何自动化打包过程?

这里有两个工具:Ant、爱加密渠道监测。

使用Ant打包,需要注意两点:一个是要在Ant中支持For循环,以自动做多次打包动作;一个是如何能够在Ant中修改Manifest文件,以支持不同的市场。

1.Ant

在Ant的核心包里没有相关的For循环的Task,要下载相应的扩展包。可以使用开源的Ant-contrib包。

下载地址:http://ant-contrib.sourceforge.net/

下载完成后,把ant-contrib里的lib包复制到安装好的Ant库apache-ant-XXX\lib下面,就可以使用了。

具体如何使用,可以参考ant-contrib的官方网站。

2.爱加密渠道监测

使用地址:http://www.ijiami.cn/Channels

可以一键打多渠道包,精准获取国内外600个APP推广渠道信息,包括应用商店、下载站、论坛等。一站式监控所有APP相关渠道的信息,包括:版本、渠道、下载源、下载量等。方便快捷的辅助开发者管理APP在各大渠道的上线及推广运营工作。

具体使用流程详见http://www.ijiami.cn/爱加密官方网站。