美文网首页
安卓多渠道打包

安卓多渠道打包

作者: FlyClound | 来源:发表于2020-06-13 16:05 被阅读0次

    前言

    不借助任何工具,直接用 AS实现多渠道打包。

    步骤

      1. 清单文件
     <meta-data
                android:name="ATMAN_CHANNEL"
                android:value="${ATMAN_CHANNEL_VALUE}" />
    
      1. 在 module 的 build.gradle 中配置渠道
        1. 指定渠道
            //指定渠道
            productFlavors {
          vivo {}
          oppo {}
          huawei {}
          xiaomi {}
          wandoujia {}
          yingyongbao {}
          qh360 {}
          baidu {}
          }
          
        2. 获取所有渠道
          //    通过脚本获取所有渠道
          //    在Terminal控制台输入gradlew assembleRelease开始打包
          //    包生成在build-->outputs-->apk文件夹
          productFlavors.all {
              //遍历替换所有渠道
            flavor -> flavor.manifestPlaceholders = [ATMAN_CHANNEL_VALUE:       name]
          }
        
        1. 可以修改生成的 apk 名字(可选)
            //自定义打包时apk名字
          //    android.applicationVariants.all { variant ->
          //        variant.outputs.all {
          //            // abc_渠道名_版本名.apk  还可以拼接其他app内容:                                    variant.versionCode  variant.buildType.name
                    //            outputFileName =             "GreenVolley_${variant.name}_${variant.versionName}_${new   Date().format("yyyy-MM-dd")}.apk"
              //        }
              //    }
        

    完整配置:

    android {
        signingConfigs {
            release {
                storeFile file('/Users/kiwilss/Desktop/tools/studioTools/key/Lss.jks')
                storePassword '123456'
                keyAlias = 'lss'
                keyPassword '123456'
            }
        }
        compileSdkVersion 29
        buildToolsVersion "29.0.2"
    
        defaultConfig {
            applicationId "com.kiwilss.meituan"
            minSdkVersion 19
            targetSdkVersion 29
            versionCode 1
            versionName "1.0"
            //必须要保证所有的flavor 都属于同一个维度
            flavorDimensions "default"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    
        buildTypes {
            release {
                signingConfig signingConfigs.release
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        //指定渠道
        productFlavors {
            vivo {}
            oppo {}
            huawei {}
            xiaomi {}
            wandoujia {}
            yingyongbao {}
            qh360 {}
            baidu {}
        }
    //    通过脚本获取所有渠道
    //    在Terminal控制台输入gradlew assembleRelease开始打包
    //    包生成在build-->outputs-->apk文件夹
        productFlavors.all {
                //遍历替换所有渠道
            flavor -> flavor.manifestPlaceholders = [ATMAN_CHANNEL_VALUE: name]
        }
    
        //自定义打包时apk名字
    //    android.applicationVariants.all { variant ->
    //        variant.outputs.all {
    //            // abc_渠道名_版本名.apk  还可以拼接其他app内容:variant.versionCode  variant.buildType.name
    //            outputFileName = "GreenVolley_${variant.name}_${variant.versionName}_${new Date().format("yyyy-MM-dd")}.apk"
    //        }
    //    }
    }
    
      1. 在右侧可以打开,就可以打对应的渠道包了,如下图


        iShot2020-06-1316.02.02.png
      1. 获取渠道名称
     public static String getChannelName(Context context){
            if (context == null) {
                return null;
            }
            String channelName = null;
            try {
                PackageManager packageManager = context.getPackageManager();
                if (packageManager != null) {
                    //注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
                    ApplicationInfo applicationInfo = packageManager.getApplicationInfo(
                            context.getPackageName(),
                            PackageManager.GET_META_DATA
                    );
                        if (applicationInfo.metaData != null) {
                            channelName = applicationInfo.metaData.getString("ATMAN_CHANNEL");
                        }
    
                }
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            return channelName;
        }
    

    demo地址 master版

    相关文章

      网友评论

          本文标题:安卓多渠道打包

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