Android 多渠道包

build.gradle

android{
    ...    

    flavorDimensions 'region', 'market'

    productFlavors {
        googleplay {
            dimension 'region'
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "googleplayMarket"]
            ndk {
                //谷歌渠道只需要提供armeabi-v7a和arm64-v8a
                abiFilters = ['armeabi-v7a', 'arm64-v8a']
            }
        }
        mainland {
            dimension 'region'
            ndk {
                //国内渠道只需要提供armeabi-v7a(节省包的大小)
                abiFilters = ['armeabi-v7a']
            }
        }
        market {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Tesing"
        }
        xiaomi {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Xiaomi"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        }
        xiaomiPreinstall{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Xiaomi_Preinstall"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi_preinstall"]
        }
        huaweipromo {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "HuaWei-Promo"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei-promo"]
        }
        huawei {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Huawei"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"]
        }
        yingyongbao {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Myapp"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
        }
        samsung {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Samsung"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "samsung"]
        }
        oppo {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Oppo"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "oppo"]
        }
        vivo {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Vivo"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "vivo"]
        }
        meizu{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "Meizu"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "meizu"]
        }
        qihu360{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "qihu360"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qihu360"]
        }
        qihu360promotion{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "qihu360promotion"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qihu360promotion"]
        }
        baidu{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "baidu"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
        }
        wandoujia{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "wandoujia"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        }
        sogou{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "sogou"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "sogou"]
        }
        smartisan{
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "smartisan"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "smartisan"]
        }
        mainlandpromotion {
            dimension 'market'
            resValue "string", "APPSFLYER_TRACKING_STORE_CHANNEL", "MainlandPromotion"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "mainlandpromotion"]
        }
    }
}

        其中 ndk 指定该渠道包的 ABI 配置,会覆盖默认配置,其他渠道包如果不特殊声明则采用默认配置:

defaultConfig {
    ...
   ndk {
      // Specifies the ABI configurations of your native
      // libraries Gradle should build and package with your APK.
      abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
    }
  }

         manifestPlaceholders 可以在打包时替换 androidManifest.xml 中对应的变量,resValue 同理,上面主要是友盟相关配置的信息:

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

<meta-data
            android:name="CHANNEL"
            android:value="@string/APPSFLYER_TRACKING_STORE_CHANNEL" />

        指定生成 apk 的名称格式:

android.applicationVariants.all { variant ->
        variant.outputs.all { output ->

            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                // 输出文件名: myApk-v1.0-1-api5.2-t2018.01.01-11:12:13release.apk
                outputFileName = "myApk" + "-v" + defaultConfig.versionName + "-" + defaultConfig.versionCode + "-api" + "${rootProject.ext.buildConfig.apiVersion}" + "-t" + "${rootProject.ext.buildConfig.buildTime}".replace(" ", "-").replace(":", "-") + "-" + output.baseName + ".apk"
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值