Androidはgroovyでgradleでフィールドをカスタマイズする方法でversionNameバージョンをワンタッチで切り替える
一、問題:普段開発中によくある項目の状態を変更し、debug状態によって環境を区別し、コードにはBuildConfigを通しているが、gradleには似たような方法がない.以下にgradleファイルでフィールドをカスタマイズして状態切り替えを実現する方法を説明する(主にgroovyが熟知していない)例えばAndroidファイルで環境を判断:
以上の場合、コードでの使用は確かに便利ですが、 gradleで環境を判別する
二、解決:gradleでフィールドをカスタマイズしてワンクリック切り替えを実現する
面倒なことに、パッケージごとに複数のバージョン番号を変更し、別の
三、結びの言葉:groovyは非常に強力な言語であり、自動化で開発中の多くの些細なことを軽減することができ、研究の過程で一つの問題に直面した:
if (BuildConfig.DEBUG) {
// TODO: xxx
}else{
// TODO: xxx
}
以上の場合、コードでの使用は確かに便利ですが、
build.gradle
に移行し、例えば出力バージョンタイプに移行すると、buildTypes
でbuildConfigFieldをカスタマイズして異なるバージョンタイプのversionName
を構成するしかありません.android.applicationVariants.all { variant ->
println("${variant.name}-${variant.versionName}-${variant.versionCode}}.apk")
}
二、解決:gradleでフィールドをカスタマイズしてワンクリック切り替えを実現する
面倒なことに、パッケージごとに複数のバージョン番号を変更し、別の
config.gradle
に統合して管理することで、パッケージ前の変更が容易になります.例えば、boolean値でdev情報を入力するかどうかを制御したい場合は、次のようにします.
/**
* APP
* debug dev
* @return debug release versionName
*/
def getVersionName(){
for (def property : getProperties()){
System.out.println(" ------>>> ${property.key} : ${property.value}")
}
def versionType = hasProperty("isReleaseVersion") ? isReleaseVersion : ext.isReleaseVersion as boolean
return versionType ? "1.0.0" : "1.0.0dev"
}
ext {
// 1.appConfig
complileSdkVersion = 29
minSdkVersion = 21
targetSdkVersion = 29
// FIXME: 2020/8/19 apk [isReleaseVersion]
isReleaseVersion = Boolean.TRUE // , debug:false release:true
versionCode = 1
// : ,
versionName = getVersionName()
// 2.dependencies
dependencies =
[
"key" : "value"
]
}
build.gradle
で使用され、2つのgradle
ファイルが同じレベルのディレクトリの場合、パケットを導く必要はなく、rootProject
を直接使用することができます.android {
compileSdkVersion rootProject.ext.complileSdkVersion
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName // versionName
}
}
三、結びの言葉:groovyは非常に強力な言語であり、自動化で開発中の多くの些細なことを軽減することができ、研究の過程で一つの問題に直面した:
,