We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
keystore
keystore1.jks
pass4keystore
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; }
<application android:icon="${app_icon}" android:label="@string/app_name" android:theme="@style/AppTheme"> ... <meta-data android:name="UMENG_CHANNEL" android:value="${ENVIRONMENT}" /> ... </application>
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" } } }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
如何简单的使用keystore文件为apk签名
keystore
,并将签名文件比如keystore1.jks
放到目录下。比如创建的
keystore1.jks
文件,密码为pass4keystore
;签名文件下有一个alias为itlgl
,密码为pass4itlgl
。build.gradle
文件下增加配置:这样release版本和debug版本就都用keystore1.jks文件进行了签名
不同的渠道有不同的包名
不同的渠道修改不同的versionName
不同渠道在资源文件添加不同字段
利用 resValue 来定义资源的值,顾名思义 res 底下的内容应该都可以创建,最后用 R.xxx.xxx 来引用。
如下就根据不同的类型,添加了不同的 app_name 字段,以及定义了 布尔值,可以通过 R.string.app_name 来引用。
注意,这里是添加,是在 string.xml 里面添加了一个字段app_name,所以在现有的 string.xml 中不能有这个字段,否则会报错!!!
通过以上我们大概可以推测出 color、dimen 也可以通过类似的方法添加。
不同渠道添加不同的常量到BuildConfig
在我们自己的任意的类中,来直接通过 BuildConfig 就可以调用我们定义的字段。
不同渠道,修改 AndroidManifest.xml 里渠道变量
不同环境,引用不同的 module
这个就很强大了,根据不同的环境,引用对应的 module。
你可以替换大量的图片,string,color,vaule等等。
首先,要建立跟渠道对应的 module,然后再引用。
引用方式如下:
如何修改不同渠道apk的名称
在gradle下添加:
参考资料
The text was updated successfully, but these errors were encountered: