最近项目中,不一样环境须要配置的参数愈来愈多,为了减小修改代码次数。研究了一下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