keystore
,并将签名文件比如keystore1.jks
放到目录下。keystore1.jks
文件,密码为pass4keystore
;签名文件下有一个alias为itlgl
,密码为pass4itlgl
。build.gradle
文件下增加配置:android { signingConfigs { keystore1 { keyAlias 'itlgl' keyPassword 'pass4itlgl' storeFile file('./keystore/keystore1.jks') storePassword 'pass4keystore' } } // 省略部分配置 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.keystore1 } debug { signingConfig signingConfigs.keystore1 } } }
这样release版本和debug版本就都用keystore1.jks文件进行了签名
android { // android studio升级以后,需要在文件中加上一个这个 // https://blog.csdn.net/syif88/article/details/75009663 flavorDimensions "test" productFlavors { dev { // 包名将被修改为com.itlgl.dev applicationId "com.itlgl.dev" // 也可以用下面这种后缀的方式,dev模式下将会在原有的applicationId后面缀上.dev // applicationIdSuffix ".dev" } stage { applicationId "com.itlgl.stage" } prod { applicationId "com.itlgl.prod" } } }
android { // android studio升级以后,需要在文件中加上一个这个 // https://blog.csdn.net/syif88/article/details/75009663 flavorDimensions "test" productFlavors { dev { // versionName将被修改为xxx_dev versionName "xxx_dev" // 也可以用下面这种后缀的方式,dev模式下将会在原有的versionName后面缀上_dev // versionNameSuffix "_dev" } stage { versionName "xxx_stage" } prod { versionName "xxx_prod" } } }
利用 resValue 来定义资源的值,顾名思义 res 底下的内容应该都可以创建,最后用 R.xxx.xxx 来引用。
如下就根据不同的类型,添加了不同的 app_name 字段,以及定义了 布尔值,可以通过 R.string.app_name 来引用。
注意,这里是添加,是在 string.xml 里面添加了一个字段app_name,所以在现有的 string.xml 中不能有这个字段,否则会报错!!!
android { // android studio升级以后,需要在文件中加上一个这个 // https://blog.csdn.net/syif88/article/details/75009663 flavorDimensions "test" productFlavors { dev { resValue "string", "app_name", "dev_myapp" resValue "bool", "isrRank", 'false' } stage { resValue "string", "app_name", "stage_myapp" resValue "bool", "isrRank", 'true' } prod { resValue "string", "app_name", "myapp" resValue "bool", "isrRank", 'true' } } }
通过以上我们大概可以推测出 color、dimen 也可以通过类似的方法添加。
android { // android studio升级以后,需要在文件中加上一个这个 // https://blog.csdn.net/syif88/article/details/75009663 flavorDimensions "test" productFlavors { dev { buildConfigField "String", "ENVIRONMENT", '"dev"' } stage { buildConfigField "String", "ENVIRONMENT", '"stage"' } prod { buildConfigField "String", "ENVIRONMENT", '"prod"' } } }
public class Constants { public static final String ENVIRONMENT = BuildConfig.ENVIRONMENT; }
... ...
android { // android studio升级以后,需要在文件中加上一个这个 // https://blog.csdn.net/syif88/article/details/75009663 flavorDimensions "test" productFlavors { dev { manifestPlaceholders = [ENVIRONMENT: "dev", app_icon : "@drawable/icon_dev"] } stage { manifestPlaceholders = [ENVIRONMENT: "stage", app_icon : "@drawable/icon_stage"] } prod { manifestPlaceholders = [ENVIRONMENT: "prod", app_icon : "@drawable/icon_prod"] } } }
这个就很强大了,根据不同的环境,引用对应的 module。
你可以替换大量的图片,string,color,vaule等等。
首先,要建立跟渠道对应的 module,然后再引用。
引用方式如下:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // 引用本的项目 devCompile project(':devModule') stageCompile project(':stageModule') prodCompile project(':prodModule') // 也可以分渠道引用网络的。因为这里都相同,所以地址也就都一样了 devCompile 'com.roughike:bottom-bar:2.0.2' stageCompile 'com.roughike:bottom-bar:2.0.2' prodCompile 'com.roughike:bottom-bar:2.0.2' }
在gradle下添加:
android { compileSdkVersion 27 defaultConfig { applicationId "com.itlgl" minSdkVersion 19 targetSdkVersion 27 versionCode 1 versionName "1" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } // android studio升级以后,需要在文件中加上一个这个 // https://blog.csdn.net/syif88/article/details/75009663 flavorDimensions "test" productFlavors { dev { versionNameSuffix "_dev" } stage { versionNameSuffix "_stage" } prod { versionNameSuffix "_prod" } } // 生成的apk名字就变成了 // --build // ----outputs // ------apk // --------dev // ----------debug // ------------xxx_1_dev.apk // --------stage // ----------debug // ------------xxx_1_stage.apk // --------prod // ----------debug // ------------xxx_1_prod.apk android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "xxx_${defaultConfig.versionName}${variant.productFlavors[0].versionNameSuffix}.apk" } } }