美文网首页Android疑难杂症
安卓 利用Gradle配置多渠道打包的方法

安卓 利用Gradle配置多渠道打包的方法

作者: ToNext | 来源:发表于2017-11-25 12:04 被阅读38次

    关于Gradle多渠道打包的问题

    刚开始用ant的打包方式,后来换了Android-studio开发之后,就换做gradle多渠道打包,一时间确实方便了很多,配置非常简单,打包时间跟电脑配置有很大的关系。因为一直用的是友盟统计,下面简单记录下大致的流程。

    之前打包的代码是这样的,因为需要在调用接口的时候传渠道号

    <application> 
    ......
    <meta-data
            android:name="UMENG_CHANNEL"
            android:value="@string/channel_id" />
    ......
    </application>
    

    我们知道友盟的官网文档建议我们在清单文件中设置name="UMENG_CHANNEL"如下的meta-data标签

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

    然后我们在module中的build.gradle文件中可以设置productFlavors ,如图

    android {  
        ......
        productFlavors {
            anzhi{
                manifestPlaceholders = [UMENG_CHANNEL: "anzhi"]
            }
            baidu {
                manifestPlaceholders = [UMENG_CHANNEL: "baidu"]
            }
            wandoujia {
                manifestPlaceholders = [UMENG_CHANNEL: "wandoujia"]
            }
        }  
        ......
    }
    

    假如你要打很多的渠道包的情况,是不是要写很多?现在我们可以用下面的快速设置

    productFlavors {
        anzhi{}
        baidu {}
        wandoujia {}
    }
    

    这时候也需要加上下面这句话,意思就是包含了上面所有的渠道。

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

    这样我们就可以直接打包了,当然gradle打包只是将清单文件中的UMENG_CHANNEL的值更改为我们所写的渠道号,与我们之前打包的方式不同的是String里面的值并没有改,那么假如业务需求要在用户注册和充值的时候传渠道号,怎么办呢?给大家介绍一个常用的方法。

    ApplicationInfo appInfo = null;
        try {
            appInfo = this.getPackageManager()
                    .getApplicationInfo(getPackageName(),
                            PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String msg = appInfo.metaData.getString("UMENG_CHANNEL");
    

    通过这个方法可以得到清单文件中的UMENG_CHANNEL的Values,这样的话我们的业务就可以完整实现了。

    相关文章

      网友评论

        本文标题:安卓 利用Gradle配置多渠道打包的方法

        本文链接:https://www.haomeiwen.com/subject/asfcbxtx.html