一.需求就是如何实现线上环境和开发环境切换不同的接口api?再就是同一台手机如何可以安装开发包和正式包两个包呢?
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.servicedemo"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
//这里的名字自定义,不要求大小写
release {
// 这里是在 applicationId 中添加了一个后缀。所以『.』要加上
applicationIdSuffix ".release"
// 这里的作用是选择是否混淆代码
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
dev {
applicationIdSuffix ".dev"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// 这里是为了不同过的版本设置一些特殊的参数,并不直接和 buildType 关联。
//例如:使用 buildType 中的 dev 版本,也可以使用 flavors_release 里面设置的自定义参数。这需要自己按照需求制定。
productFlavors {
//自定义名字不过不能和上面buildType中相同,不然Gradle编译会不通过。在这里使用了『flavors_』前缀以便区分。
flavors_release {
// manifestPlaceholders中写到的『str』,『package_name』不支持用大写,否则Gradle编译会不通过。
// 这里所设置的变量可以直接使用在『AndroidManifest.xml』中,使用方式为:${package_name}
// android:label="${package_name}"
manifestPlaceholders = [str: "releaseStr", package_name: "com.example.servicedemo"]
// 这里的参数是为了在 java 代码中使用,具体的使用方式为:context.getResources().getString(R.string.strKey);
resValue("bool", "release", "true")
}
flavors_dev {
manifestPlaceholders = [str: "devStr", package_name: "com.example.servicedemo.dev"]
resValue("bool", "release", "false")
}
}
}