android {
signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('xxx')
storePassword 'xxx'
}
}
useLibrary 'org.apache.http.legacy'
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
compileSdkVersion 28
defaultConfig {
applicationId "com.xxx.xxxx"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.config
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "default"] //清单文件占位符
ndk {
// abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
abiFilters "armeabi-v7a"
}
}
// https://developer.android.com/studio/build/build-variants#build-types 配置编译变体
flavorDimensions "api", "mode" //变体名称 app-[api]-[mode]-[release|debug].apk 可以进行任意组合,再添加一个Dimension即可实现多渠道打包
productFlavors {
//同 app/src/main 目录同级别,如app/src/free、app/src/pro可分别创建相同目录资源文件,当前目录资源使用会优先于main目录,可打包成不同风味的apk
//如:包名;版本号;支持的最小sdkVersion;资源:values、drawable、layout;java代码;等
free {
dimension "mode"
applicationIdSuffix ".free"
versionNameSuffix "-free"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "free"] //清单文件占位符
}
pro {
dimension "mode"
applicationIdSuffix ".pro"
versionNameSuffix "-pro"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "pro"] //清单文件占位符
}
minApi24 {
dimension "api"
minSdkVersion '24'
versionCode 30000 + android.defaultConfig.versionCode
versionNameSuffix "-minApi24"
}
minApi21 {
dimension "api"
minSdkVersion '21'
versionCode 20000 + android.defaultConfig.versionCode
versionNameSuffix "-minApi21"
}
}
// variantFilter { variant ->
// def names = variant.flavors*.name
// if (names.contains("minApi21") && names.contains("pro")) {
// //app-[api]-[mode]-[release|debug].apk 忽略满足该条件的变体的组合
// setIgnore(true)
// }
// }
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "app_${new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))}_${variant.versionName}-${variant.buildType.name}.apk"
}
}
buildTypes {
release {
buildConfigField("String", "API_HOST", "\"http://xxx\"")
// buildConfigField("boolean", "IS_LOG_DEBUG", "true") //BuildConfig 占位
// resValue("string", "app_name", "myApp") //资源文件 占位
// resValue("string", "build_time", "${minutesSinceEpoch}") //资源文件 占位
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
minifyEnabled false
}
debug {
buildConfigField("String", "API_HOST", "\"http://xxx\"")
signingConfig signingConfigs.config
minifyEnabled false
}
}
sourceSets {
main {
jni.srcDirs = []
}
}
}
配置后可以编译的类型组合
