productFlavors简单使用

最近项目中,不一样环境须要配置的参数愈来愈多,为了减小修改代码次数。研究了一下productFlavors的使用方式,总结以下html

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

2. 每一个productFlavors中能够自定义各类变量android

替换manifest中的变量须要注意,若是替换2个以上用逗号分隔。api

<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 依赖不用的包则使用app

configurations {
    demo
    full
    minApi24
    ....
}

dependencies中修改成ui

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文件夹中。this

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

参考:.net

android 多渠道打包的应用code

配置构建变体htm

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

productFlavors在Lib(Module)中的使用

相关文章
相关标签/搜索