android渠道
A. 如何在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 static String getChannelCode(Context context) {
String code = getMetaData(context, "CHANNEL");
if (code != null) {
return code;
}
return "C_000";
}
private static String 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) {
return value.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> 任务,还可以实现基于正则表达式的替换。
例
B. APP常用的推广渠道包括哪些 Android产品推广渠道汇总
1.应用市场:
360,应用宝,网络手机助手,91安卓,豌豆荚,应用汇,机锋,搜狗UC淘宝手机助手,网易,N多,优亿市场,安智市场,3G,木蚂蚁,历趣市场等。
2.手机运营商应用商店:
所谓运营商渠道就是指中国移动、联通、电信运营商,他们主要的有点就是用户基数大,如果你的产品够好,没准还能获得运营商的支持。
3.手机系统商应用商店:
就是三星,华为,小米,联想,乐视,金立,酷派,OPPO,VIVO,魅族,奇酷,坚果等官方应用商店。
4.第三方应用商店:
第一种就属于第三方商店,渠道专员要准备大量素材,测试等与应用市场对接。各应用市场规则不一,如何与应用市场负责人沟通,积累经验与技巧至关重要。资金充足的情况下,可以投放一些广告位及推荐等。
5.软件下载站:
比如天空下载、华军软件下载、网络软件中心、中关村下载、太平洋下载等下载站也可以提交你的app获得用户。
C. ANDROID多渠道快速打包实践
参考资料:
美团Android自动化之旅—生成渠道包
Android批量打包提速
AndroidMultiChannelBuildTool
背景
随着发版需要,每次发版所需渠道包越来越多(现在差不多有一百个左右了),正常gradle打包由于耗时效率过低已无法满足需求,开始了android多渠道快速打包实践。
方法
下面主要介绍两种快速打包的方式:
1、类似美团的方式,在META-INF中写入渠道名的空文件,用于读取空文件。 美团Android自动化之旅—生成渠道包
2、在apk末尾动态写入渠道信息。 一种动态为apk写入信息的方案
其实这两种方式都是同一个原理,替换以前从manifest中读取渠道号的方式,而使用新的获取方式(渠道号如何写入就如何读取)。
所以这首先需要客户端(重要!):
1、统一应用中获取渠道的方式并替换之前的(最好兼容)。
2、注意第三方SDK渠道号的传入,比如友盟sdk,否则第三方会使用默认从manifest中读取的方式。
下面介绍一种已经测试过的方法(git上开源项目 AndroidMultiChannelBuildTool )
1、安装环境由于脚本环境是使用python语言,所以需要我们 安装环境 。
2、导入项目导入开源项目 AndroidMultiChannelBuildTool ),并把想要批量打包的apk文件拷贝到PythonTool目录下(与py同级),运行py脚本即可打包完成。
以上基本实现快速打包,经过测试一分钟百十个无压力。另外需要注意这种方式只适用于打包需求一致渠道号不同,不适用特殊定制渠道。
备注:9月21日补充快速打包java版本,详见 AndroidMultiChannelBuildTool-Java-master
D. Android app的渠道包是什么意思
1、渠道包:
渠道包指的是在各大应用市场,发布的apk包的清单文件中,某个meta-data标签下,配置的value不一样,这个标签的作用就是用来区分是哪个市场的,比如你发布到360.这个值就是你就可以配置成360,豌豆荚就可以配置成wandoujia,那么这么配置的作用是干嘛的?很简单,就是用来做统计的,比如我们项目中用的是友盟统计,它可以统计用户从哪个平台下载了你们的app,从而更好的掌握用户的操作习惯。所以,如果app没有统计功能的需求,你只需要打一个同样的包,直接发布到各个平台即可,根本不用关心什么渠道。
2、首发渠道包的含义我并不理解,字面的意思可能是说
在同一个apk版本中,有些渠道平台拥有优先体验最新版本的权限,那么这些平台就是首发平台,之后过了一个星期,才将这个apk发布到另外一些的平台。
3、抓包
首先要明白,抓包和渠道包没有半点关系。
抓包指的是我们在请求服务器的时候,发出去的所有请求我都可以直观的看到,包括请求的地址,请求头,请求体,以及服务器返回的结果:响应头,响应体等等。这个从不可见到直观可见的抓取过程,才是抓包。
抓包的主要作用是方便与服务端人员的配合。Windows比较好用的抓包工具是Filder,OS可以使用Charles(收费)。
E. (五)Android多渠道打包:美团多渠道打包原理以及使用
1.传统打包:
传统的打包方法都是在AndroidManifest添加渠道标示,每打一次包修改一次标示的名称。效率特别的低,一个稍微大一点的项目打上几十个渠道包可能需要几个小时半天的时间。
2.由于传统的打包方式每次修改渠道都需要重新的构建项目,时间都浪费构建上面了,美团提供了一种新的打包方案:
Android应用使用的APK文件就是一个带签名信息的ZIP文件,根据 ZIP文件格式规范,每个ZIP文件的最后都必须有一个叫 Central Directory Record 的部分,这个CDR的最后部分叫”end of central directory record”,这一部分包含一些元数据,它的末尾是ZIP文件的注释。注释包含Comment Length和File Comment两个字段,前者表示注释内容的长度,后者是注释的内容,正确修改这一部分不会对ZIP文件造成破坏,利用这个字段,我们可以添加一些自定义的数据,Packer-Ng方式打包就是在这里添加和读取渠道信息。打包神器,100个渠道包只需5s 哈哈 。
原理很简单,就是将渠道信息存放在APK文件的注释字段中。
第一步:直接将PackerNg作为Utils拷贝到项目中。
第二步:创建一个保存渠道包名的txt文件,可以放在项目主目录下:比如命名market.txt
渠道名可以按照需求随便添加
an
huawei
legend
letv
meizu
oppo
qq
PC
sougou
UC
update
update1
vivo
wandoujia
woshangdian
xiaomi
第三步:ChannelUtil这个工具类是用于取出文件里的渠道名
第四步:打开第二步中的PackerNg类,首先配置一下此类main函数中接受的参数信息。本事例通过Android Studio的方式进行配置直接上图:
图中标注3的位置就是PackerNg类配置main函数中接受的两个参数: 第一个参数为默认的release包的apk源文件,包名为ChannelUtil起初默认的包名
拿到这个包名可以传给后台进行统计或进行其它的操作。
第六步:运行PackerNg类,会在项目目录下自动生成文件夹apks(在PackerNg.java文件中配置好的apk渠道包存储路径)
注意点:第四步中ChannelUtil起初默认的包名为源文件,其它所有的的渠道包都是通过PackerNg打包方式都是以这个源文件为模版,进行复制,将不同的渠道名复制给这个源文件。如果是360渠道上线的话需要将这个包名默认改为360的渠道单独打包,因为360上线需要加固,会把之前通过源文件复制渠道名给抹掉,所以对于360加固的文件需要单独把360作为源文件来打包不改为360默认的渠道包后会统计不到360渠道的信息。
F. Android为什么要多渠道打包
android多渠道打包应该是android应用的多渠道打包推广。
渠道打包就是分不同的市场打包,比如安卓市场,网络市场,Google市场,360市场等等,太多了。分渠道打包目的是为了针对不同市场做出不同的一些统计,数据分析,收集用户信息。
G. Android的APP渠道统计是怎么做的
免费接入第三方的数据统计平台,碧雹我们的打卡提醒软件悔虚帆不管是数据统计还是push推送都接的是第三方誉掘的接口,你也可以试试!
H. Android 怎么获取 umeng 的 渠道信息
Andriod版本APP获取umeng的渠道信息,可以让技术人员在程序羡扰中嵌入渠道编码,具体步骤如下:
进入兄仔旦友盟网站,注册帐号,绑定友盟应用统计;
下载友盟SDK文件,由技术开发人员嵌入到APP程序代码中,具体操作方法可以参戚衡考友盟网站的嵌入指南;
根据安卓版本不同的发布渠道,定义好channel ID;
修改代码中与channel相关的代码,比如将<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>中的Channel ID替换为您应用的推广渠道名称,channel id自定义。
对应每个渠道生成一一对应的APK安装包;
将标记好Channel ID的渠道安装包,在对应的渠道发布;
定时登录友盟后台查看渠道数据。
I. 如何获取 android 渠道名称
/**
*获取渠道名
*@paramctx此处习惯性的设置为activity,实际上context就可以
*@return如果没有获取成功,那么返回值为空
*/
(Activityctx){
if(ctx==null){
returnnull;
}
StringchannelName=null;
try{
PackageManagerpackageManager=ctx.getPackageManager();
if(packageManager!=null){
纤扮巧//注意此处为ApplicationInfo而不是ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
=packageManager.getApplicationInfo(ctx.getPackageName(),PackageManager.GET_META_DATA);
if(applicationInfo!=null){
if(applicationInfo.metaData!=null){
channelName=applicationInfo.metaData.getString("");
}
}
}
}catch(PackageManager.NameNotFoundExceptione){
缺轮e.printStackTrace();
}
returnchannelName;
}
提取为通用方法:
/**
*获取application中指定的meta-data
*@return如果没有获取成功(没有对应值,或者异常),则返回值为空
*/
(Contextctx,Stringkey)毁键{
if(ctx==null||TextUtils.isEmpty(key)){
returnnull;
}
StringresultData=null;
try{
PackageManagerpackageManager=ctx.getPackageManager();
if(packageManager!=null){
=packageManager.getApplicationInfo(ctx.getPackageName(),PackageManager.GET_META_DATA);
if(applicationInfo!=null){
if(applicationInfo.metaData!=null){
resultData=applicationInfo.metaData.getString(key);
}
}
}
}catch(PackageManager.NameNotFoundExceptione){
e.printStackTrace();
}
returnresultData;
}
J. Android的APP,是怎么做渠道统计的
安卓渠道统计方案
方法1:通常传统的做法是对不同渠道进行分包发布,每个渠道打一个标识唯一的渠道id的安装包,再收集渠道安装数据。这种方式有些弊端,如果渠道很多的话比如说有100个渠道要推广,就得手工打100个渠道包,这样做的话技术人员就比较辛苦了。另一个弊端就是应用市场会存在抓包的情况,这样就会造成数据不准的情况。
方法2:用渠道链接替代渠道安装包做渠道统计,这种方案就可以免去手工打渠道包,而且统计数据会更精确。具体实现请参考openinstall的官网 www.openinstall.io