Android多渠道打包实现不同的功能模块

个人观点:学习重在积累,每天一点积累,你成为大神就更进了一步,好了我就不装逼了。

相关博客:
http://www.cnblogs.com/0616–ataozhijia/p/4203997.html
http://blog.csdn.net/maosidiaoxian/article/details/42000913

大家一起来看看这样一个需求:项目需要打包成有支付功能的和没有支付功能的。肯定就会想到多渠道打包,想到多渠道打包自然就会用到Umeng的多渠道打包,那么在渠道下面又怎么实现功能控制呢?于是我就想啊….xxx于是乎,我有了这样一个思路。

首先你必须在AndroidManifest.xml中的meta-data修改以下的样子:‘

        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}" />

    </application>

这里的android:name你可以随意命名,如android:name="KOOL_POS"android:value的值就多个${},如android:value="${KOOL_POS_VALUE}"

然后在你项目的gradle中添加多渠道:

    productFlavors {
        baidu {}
        taobao {}
        qq {}
    }

推荐做法:

    productFlavors {
        baidu {
            applicationId "com.github.ws.baidu"
        }
        taobao {
            applicationId "com.github.ws.taobao"
        }
        qq {
            applicationId "com.github.ws.qq"
        }
    }

为啥要加applicationId 呢,是为了防止多渠道打包不会覆盖安装。

记得添加:

    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [KOOL_POS_VALUE: name]
    }

注意你需要打baidu的包,请把name改成"baidu"。如:flavor.manifestPlaceholders = [KOOL_POS_VALUE: "baidu"],其他的同理。

最关键的一步,既然我们在AndroidManifest.xml中配置了meta-data,那么就可以在Java代码中获取meta-data信息,就可以知道是打谁的包呢。

如:

 try {
            ApplicationInfo info = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
            String value = info.metaData.getString("UMENG_CHANNEL");
            switch (value) {
                case "baidu":
                     //处理 baidu  打包功能模块
                    break;
                case "taobao":
                    //处理 taobao 打包功能模块
                    break;
                case "qq":
                    //处理 qq打包功能模块
                    break;
                default:
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

好了,如果你有更好的方案,请给我留言。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值