使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名

第一次写博客分享。写的不好,请提出您宝贵的建议。

使用了一段时间的android studio 发现了它非常的强大。最近公司营运部门要求分渠道打包开发包。我在网上看了些资料。结合自身的情况,写了这篇文章来记录一下使用过程。那么我们进入正题:

我是使用android studio 的gradle命令来进行批量打包的。

  1. 首先设置你的.keystore签名文件参数 


    使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名_第1张图片

    使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名_第2张图片

  2. 进入对应的主要gradle,我这边view module是入口

    使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名_第3张图片

将以下下代码 拷贝到  gradle 文件下面,渠道名称根据你的需求

android {

productFlavors {
    木蚂蚁 {}
    手机中国 {}
    豌豆荚 {}
    百度 {}
    腾讯应用宝 {}
    市场360 {}
    小米 {}
    机锋市场 {}
    乐商店 {}
    应用汇 {}
    UC {}
    安智 {}
    智汇云 {}
    搜狗市场 {}
    网易市场 {}
    APP发布 {}
    vivo {}
    神马 {}
    安卓园 {}
    安粉网 {}
    安贝市场 {}
    安卓之家 {}
   productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
        }
    
}
}
 productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
        }
        //这句话的意思是 在  AndroidManifest.xml当中设置了渠道名称,对应的值
   //  <application
    //    android:name=".xxxx"
    //    android:allowBackup="true"
    //    android:icon="@mipmap/ic_launcher"
    //    android:label="@string/app_name"
    //    android:theme="@style/AppTheme" >
  //  <.................
  //  ..
  //  .</>
    
     //   <meta-data android:name="UMENG_CHANNEL"
      //             android:value="${UMENG_CHANNEL_VALUE}" /> 
                   
    //  <......../>

这样子,渠道就设置完成了。现在大家就可以看看

使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名_第4张图片

使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名_第5张图片

是不是多了你设置的渠道名称。这样可以进行单渠道打包。但这样劳动力就上来了。不但无聊,还浪费体力。

3.如何进行批量自动的多渠道打包呢。首先大家要设置好gradle的环境配置。这个网上有很多教程,大家可以看看。配置完成后,就可以进行批量打包啦。说一下批量打包的。看下图,直接打开一个cmd 命令窗口: 

使用android studio 实现多渠道打包,结合umeng实现动态获取渠道包名_第6张图片

输入 

gradle assembleRelease

这样就搞定了,等待程序自动打包。(注:有用win10的同志,打开系统的CMD 窗口,因为android studio 有BUG,你打不了字)

另外附上动态获取渠道名称的方法:

public static String (Context ctx,String key) {
    (ctx == || TextUtils.(key)) {
        }
    String resultData = {
        PackageManager packageManager = ctx.getPackageManager()(packageManager != ) {
            ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName()PackageManager.)(applicationInfo != ) {
                (applicationInfo.!= ) {
                    resultData = applicationInfo..getString(key)}
            }


        }
    } (PackageManager.NameNotFoundException e) {
        e.printStackTrace()}


    resultData}

本人也是菜鸟,如果哪里不对,请大神指正。有没写好的地方大家可以加我QQ:497823256 大家一起探讨下。


你可能感兴趣的:(android,gradle,Studio,多渠道打包,命令行打包)