(浅谈)AndroidStudio中关于多渠道打包相关处理
2016-07-07 09:59
507 查看
(好记性,不如烂笔头)
在新的安卓IDE下,multi-channel(多渠道)进行多市场分发时,经常遇到“好美的风景,无法直看”的尴尬场景,这里先列举一下关于我在build.gradle中及AndroidManifest.xml进行multi-channel的相关浓缩配置:AndroidManifest.xml下
<meta-data android:name="TD_CHANNEL_ID" android:value="${ONEAPM_TEST_CHANNEL}" />
有的骚年可能拜读UMENG_CHANNEL
,然后放了大招“COPY一下,马上解决”,这里先看下UMENG_CHANNEL在AndroidManifest.xml下的PlaceHolder配置
<meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" />
这里的meta-data的name,在特殊需求下我们需要据此获取渠道Name,用以针对性的进行渠道需求(name值随意发挥)。meta-data下的value值用于我们在build.gradle下进行多渠道分发时,生成的渠道包所要变换的特定Channel值,可能有点难以理解,下面展示build.gradle下的配置,可能有助于吸收:
build.geadle下
android { ... defaultConfig { ... manifestPlaceholders = [ ONEAPM_TEST_CHANNEL:"default_channel" ] } productFlavors { default_channel{} wandoujia{} _360{}//这里可进行Channel定义 } productFlavors.all { flavor ->flavor.manifestPlaceholders = [ ONEAPM_TEST_CHANNEL:name ] } }
到此,可能稍微理解了一下上面带有下划线的一句话(
meta-data下的value值用于我们在build.gradle下进行多渠道分发时,生成的渠道包所要变换的特定Channel值),manifestPlaceholders中的default_channel值可随意定,主要用于默认的渠道名。更为重要的是实践是理解万物原理的唯一标准,下面列举multi_channel的命令:
Command :gradlew assembleRelease注:值得一提的是,AndroidStudio底部Tab可以找到一个Terminal,点击可看到类似CMD窗口的内容,把命令直接放大招到此,即可进行multi_channel的编译。
骚年们,到此还不是成功的最后一步,最后一步谁呢?当然是QA的鉴定,这里所指不是让公司的QA进行测验,而是我们需要进行反编译查看AndroidManifest.xml下的meta-data的value内容是否变成我们所编译完成的多渠道Name值。我是用的apktool进行的反编译,此类文章网上已经很多了,重要的是我们反编译后,meta-data的value内容会变成包名所对应的渠道名。如:wandoujia{}名称对应:
manifestPlaceholders = [ ONEAPM_TEST_CHANNEL:"wandoujia" ]
有时,需求可能让我们在APP中获取multi-channel的Name用以针对性的处理一些逻辑,下面举例获取APP渠道名的程序:
/ * 获取渠道名 * @param activity * @return String */ public static String getChannelName(Activity activity) { if (activity == null) { return ""; } String channelName = ""; try { PackageManager packageManager = activity.getPackageManager(); if (packageManager != null) { ApplicationInfo applicationInfo = packageManager.getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA); if (applicationInfo != null) { if (applicationInfo.metaData != null) { channelName = applicationInfo.metaData.getString("TD_CHANNEL_ID"); } } } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return channelName; }
获取渠道名主要是针对一些统计等相关需求时可能会用到第三方平台,这时如果渠道没有配置成功,在反编译后是看不到meta-data这条配置的,相反,配置成功后可查看到我们的渠道名已经征服了AndroidManifest下的meta-data。
相关文章推荐
- 突击部队拼多多
- 要想精准提升注册转化率,这三大要素你要知道!
- 大数据时代,品牌如何营销?
- 渠道决定域名交易价格
- 扫码登录流程
- 友盟apk批量打包工具 使用图文教材
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- 利用DHT网络原理制作bt采集蜘蛛,开源版
- 利用DHT网络原理制作bt采集蜘蛛
- 利用DHT网络原理制作bt采集蜘蛛
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- 利用DHT网络原理制作bt采集蜘蛛
- 微信二维码线下推广是否有效
- 当年写的一篇关于发展电子商务的建议,今日读来别样滋味
- 第二届童装品牌团2015年春夏联展
- Ant自动渠道打包心得
- 感觉不错的APP评测网站
- 基于MonkeyRunner的批量渠道包自动化测试
- gradle android友盟多渠道混淆编译打包
- 杂感