android studio 多渠道打包

以前使用eclipse 多渠道打包使用python,命令方式进行打包。

android studio 多渠道打包更方便 ,相关的文档位于:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration#test_modules 

1.在app 的build.gradle中定义渠道名称 productFlavors

productFlavors {
    xiaomi {
        manifestPlaceholders = [CHANNEL_VALUE: "xiaomi"]
    }
    huawei {
        manifestPlaceholders = [CHANNEL_VALUE: "huawei"]
    }
    vivo {
        manifestPlaceholders = [CHANNEL_VALUE: "vivo"]
    }
    oppo {
        manifestPlaceholders = [CHANNEL_VALUE: "oppo"]
    }
    yyb {
        manifestPlaceholders = [CHANNEL_VALUE: "yyb"]
    }
}

 注:如果报错,忘记把问题截取下来了 报:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com,无法bulid成功 ,在

defaultConfig {
  .......
  flavorDimensions "versionCode"
}

摘自:https://blog.csdn.net/syif88/article/details/75009663,多谢。

接着bulid,既可以了。

2.接着是打包添加渠道的名称,outputFileName  gradle 3.0后使用它。

 applicationVariants.all { variant ->

      variant.outputs.all {

            outputFileName = '' + variant.productFlavors[0].name + "-" + defaultConfig.versionName + '.apk' }

    }

至此在build.gradle 中的代码完成

3.在AndroidManifest.xml中添加你的渠道meta-data

 

 注意:name别写错了

4.在你代码中获取渠道

 

/**
 * 获取channel值
 */
private void getAppChannel(){
    PackageManager packageManager=this.getPackageManager();
    try {
        ApplicationInfo applicationInfo=packageManager.getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA);
        if (applicationInfo.metaData!=null){
            app_channel = String.valueOf(applicationInfo.metaData.get("CHANNEL"));
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
}

获取的渠道名称你可以传递给服务器,或者其他使用的第三方平台。

接着就是打包了,

android studio 多渠道打包_第1张图片

你可以复选你想打包的渠道了,点击finish,打包完成后,找到包的位置。

注意:android studio 多渠道打包_第2张图片 mac打包完成后,在message里面点击打包完成的locate ,结果没有看到自己打的包。找了一会儿,发现不对,我直接进入到我打包位置的文件夹,一层一层的找,结果在这个locate进去的上层文件夹中找到了,到此就完成了。更过的打包的内容可以查看官方文档:

https://developer.android.com/studio/build/build-variants

其他打包方式有:

比较快的还有美团的:https://tech.meituan.com/android_apk_v2-signature_scheme.html 文档写的详细,同时其他的文档都值得学习。

 

 

 

 

 

你可能感兴趣的:(android)