productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下

1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,用于不同组合productFlavors。

2. 每个productFlavors中可以自定义各种变量

替换manifest中的变量需要注意,如果替换2个以上用逗号分隔。

<meta-data
            android:name="app_id"
            android:value="${id_value}" />//占位符
        <meta-data
            android:name="app_key"
            android:value="${key_value}" />
flavorDimensions "api", "mode"

  productFlavors {
    demo {
      dimension "mode"
      buildConfigField("String", "HTTP_BASE", '"https://10.10.10.222/"')//在BuildConfig中添加 String类型的HTTP_BASE 字段 并赋值
      buildConfigField("int", "POSITION_1", "10020")//增加 int型
      resValue("string","flovor_log","this is free log")//替换 res中String里的flovor_log字段
      ...
    }

    full {
      dimension "mode"
      buildConfigField("String", "HTTP_BASE", '"https://api-hd-huoyun.com/"')
      manifestPlaceholders = [id_value: "1234567890",key_value: "0987654321"]//替换manife中的变量
      ...
    }

    minApi24 {
      dimension "api"
      minSdkVersion '24'
      versionCode 30000 + android.defaultConfig.versionCode//修改版本号
      versionNameSuffix "-minApi24"//版本名称加后缀
      ...
    }

    minApi23 {
      dimension "api"
      minSdkVersion '23'
      versionCode 20000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi23"
      ...
    }

    minApi21 {
      dimension "api"
      minSdkVersion '21'
      versionCode 10000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi21"
      ...
    }
  }
}

如果需要根据不同的productFlavors 依赖不用的包则使用

configurations {
    demo
    full
    minApi24
    ....
}

dependencies中修改为

dependencies {

    implementation 'com.android.support:appcompat-v7:26.1.0'
    .....
    demoImplementation(name: 'test-demo', ext: 'aar')
    fullImplementation(name: 'test-full', ext: 'aar')
    minApi24Implementation(name: 'test-minApi24', ext: 'aar')
    .....
}

修改assets路径,此操作会把指定目录的文件拷入道工程 assets文件夹中。

sourceSets {//不同  配置 使用不用的 文件  打包时不会 全部打入 assets
        dev.assets.srcDirs = ['./allAssets/dev']
        tes.assets.srcDirs = ['./allAssets/tes']
        pro.assets.srcDirs = ['./allAssets/pro']
        personal.assets.srcDirs = ['./allAssets/personal']
    }

参考:

android 多渠道打包的应用

配置构建变体

解决方案:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors, see logs

productFlavors在Lib(Module)中的使用

 

转载于:https://my.oschina.net/ldhy/blog/1931257

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值