Android Studio 多渠道打包(二) ---meta-data
来源:互联网 发布:js动态生成商品表格 编辑:程序博客网 时间:2024/06/06 04:32
Android Studio 多渠道打包(二) —meta-data
ONE Goal ,ONE Passion !
Studio打包步骤详解:
http://blog.csdn.net/fengltxx/article/details/52816199
在AndroidManifext.xml中配置:
<meta-data android:name="UMENG_CHANNEL" android:value="${Pack_CHANNEL}" />
build.gradle中:
productFlavors { wandoujia {} youmeng {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [Pack_CHANNEL: name] }
注意:flavor.manifestPlaceholders = [Pack_CHANNEL: name]中的Pack_CHANNEL 一定要和 AndroidManifext.xml 定义的android:value=”${Pack_CHANNEL}”一致
如果不一致会报错:
wuli,别急
心中冒出几个想法.
- 1: meta-data中的name=”UMENG_CHANNEL”是干嘛的啊?
- 2: value=”${Pack_CHANNEL}” 又是干嘛的啊?
- 3: value中的值怎么使用
第一个疑问:
现在name=”UMENG_CHANNEL” 写成了UMENG_CHANNEL.可以理解为我们集成了UMENG. 友盟可以根据我们的这个name=”UMENG_CHANNEL”配置获取对用的value的值.
第二个疑问:
当打包时.会根据productFlavors中的每一个值去替换value中的值
如果打包两次.每个apk中分别为:
wandoujia.apk:
<meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />
youmeng.apk
<meta-data android:name="UMENG_CHANNEL" android:value="youmeng" />
第三个疑问:
meta-data类似与map集合存储的键值对.每个name对用一个value.
meta-data可以配置在清单文件中Application,Activity,service,receiver中.获取方式大致雷同.
Application为例:
package com.example.retrifitdemo.applicaction;import android.app.Application;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager;/** * ONE Goal,ONE Passion! * Created by ${PK_Night} on 2016/10/14. * comment: */public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //在application应用<meta-data>元素。 ApplicationInfo appInfo = null; try { appInfo = this.getPackageManager() .getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_CHANNEL"); System.out.println("--umeng_channel--" + umeng_channel); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } }}
Activity获取元素
ActivityInfo info = this.getPackageManager() .getActivityInfo(getComponentName(),PackageManager.GET_META_DATA); info.metaData.getString("meta_name");
service获取元素
ComponentName cn = new ComponentName(this, MetaDataService.class); ServiceInfo info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA); info.metaData.getString("meta_name");
receiver获取元素
ComponentName cn = new ComponentName(context, MetaDataReceiver.class);ActivityInfo info = context.getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);info.metaData.getString("meta_name");
当集成友盟后,如果是豌豆荚市场发布的apk出现了问题.那么 apk中代码获得的UMENG对应的value就为wandoujia 这样就能统计出是哪个市场的信息了.
0 0
- Android Studio 多渠道打包(二) ---meta-data
- Android Studio 多渠道打包(二)
- Android studio 多渠道打包
- Android Studio多渠道打包
- Android studio 多渠道打包
- android studio 多渠道打包
- Android Studio 多渠道打包
- Android Studio 多渠道打包
- Android Studio多渠道打包
- Android Studio多渠道打包
- Android Studio 多渠道打包
- Android Studio 多渠道打包
- Android Studio多渠道打包
- Android studio 多渠道打包
- android studio 多渠道打包
- Android Studio多渠道打包
- Android Studio 多渠道打包
- Android studio 多渠道打包
- Javascript—事件流
- Android Service的启动过程
- fpga时序分析和slack(SOC) (Quartus II)
- 手势与控件事件冲突的解决方案
- JQuery的通配符介绍
- Android Studio 多渠道打包(二) ---meta-data
- HDU ACM 2046 骨牌铺方格
- 怎么退出 git bash vim编辑器
- Eclipse建立Maven项目后无法建立src/main/java资源文件夹
- eclipse在debug模式下鼠标移动到变量上不显示值的问题
- 《机器学习》——k-近邻算法
- 显示图片的瀑布流(列数不固定)
- .Net Remoting服务端与客户端调用示例
- HTML <!DOCTYPE> 标签