android stduio gradleパラメータ構成説明
主に白掃盲と個人の強固な学習に用いられる.
以下はプロジェクトのbuildです.gradleでよく使われる構成パラメータには、基本的に注釈が含まれている意味があります.次に、それらを分解します.
一般的には、構成項目は以下の閉パッケージで構成されていますが、私たちの例では、android{}に書かれていない部分が見られます.なぜですか.どんな違いがありますか.一般的にAndroid閉パッケージの外に書かれているものはgrovvyのtaskや他のコードクリップです.
たとえば、このプロファイルでは、key-value方式で格納されたパラメータファイルをロードします.その後のandroid{}では、このファイル内のいくつかのものを使用することができます.使用方法は
buildConfigField
この主な役割は、プロジェクトがコンパイルされるとデフォルトでBuildConfigファイルが生成され、このコードが追加すると、BuildConfigが生成されると、クラス内に静的定数値が作成することを意味し、ここでは3つのパラメータ1が必要である.データ型2.属性名3.属性値
私たちのプロジェクトが大きい場合、多くのモジュールに分けて作業することがありますが、各モジュールエンジニアリングにはプライベートなbuildがあります.gradle構成情報は、このときにバージョンを統一しようとすると面倒になりますが、次から次へと変更するのは不便ですが、どうすればいいのでしょうか.ここにいるよgradleではこう書きました
私のところのこれらのバージョンの情報は公共の場所に置いてあり、すべてのサブプロジェクトが彼にアクセスして統一的に管理することができます.では、どのように使用しますか?プロジェクトのルートパスの下にbuildがあります.gradleファイル、その次男プロジェクトにはプライベートなbuildがあります.gradleファイルは、ルートディレクトリのbuild.gradleで作成すればいいです.以下を見て、みんなは少し考えて理解することができて、このような方式は更に多くの妙用があって、みんなは自分で発掘することができます
以下はプロジェクトのbuildです.gradleでよく使われる構成パラメータには、基本的に注釈が含まれている意味があります.次に、それらを分解します.
// library
apply plugin: 'com.android.library'
//
final Properties properties = new Properties()
InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream()
properties.load(inputStream)
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.appVersionCode
versionName rootProject.ext.appVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
buildConfigField 'String', 'LOGIN_URL', 'API_BASE_URL + "/page/toLogin"'
buildConfigField 'String', 'API_BASE_URL', '"http://127.0.0.1:12206/"'
buildConfigField 'String', 'UMENT_CHANNEL', '"DEV"'
// key=chennelList
buildConfigField 'String', 'CHENNEL_LIST_JSON_STRING', '"' + properties.getProperty('chennelList', '') + '"'
//
ndk {
abiFilters "armeabi"
abiFilters "armeabi-v7a"
abiFilters "x86"
}
}
//
buildTypes {
//
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'String', 'API_BASE_URL', '"https://xxxx.com"'
buildConfigField 'String', 'UMENT_CHANNEL', '"release"'
}
//
mem555 {
initWith debug
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'String', 'API_BASE_URL', '"https://xxxx.com"'
buildConfigField 'String', 'UMENT_CHANNEL', '"MEM"'
}
//
<.....>
}
//
lintOptions {
abortOnError false
}
}
//
dependencies {
//
implementation fileTree(dir: 'libs', include: ['*.jar'])
// , jar com.android.support
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support'
})
//
annotationProcessor rootProject.ext.lombokProcess
// aspectjrt:1.8.9 API
compile 'org.aspectj:aspectjrt:1.8.9'
// model
api project(':model')
// fastjson:1.2.46
api 'com.alibaba:fastjson:1.2.46'
}
// task ,
task initChennel() {
println ' '
StringBuffer sb = new StringBuffer()
def chennellist = android.buildTypes
chennellist.each { chennel ->
def paramMap = chennel.buildConfigFields
paramMap.each {
sb.append("${it.key},${it.value.value.replace("\"","")}|")
}
}
sb = new StringBuffer(sb.substring(0,sb.length() - 1))
File file = project.rootProject.file('local.properties')
Writer w = new FileWriter(file)
properties.put("chennelList", sb.toString())
println sb.toString()
properties.store(w, "conments")
println ' '
}
// UnitTest task
tasks.whenTaskAdded { task ->
if (task.name.contains('UnitTest')) {
task.enabled = false
}
}
一般的には、構成項目は以下の閉パッケージで構成されていますが、私たちの例では、android{}に書かれていない部分が見られます.なぜですか.どんな違いがありますか.一般的にAndroid閉パッケージの外に書かれているものはgrovvyのtaskや他のコードクリップです.
たとえば、このプロファイルでは、key-value方式で格納されたパラメータファイルをロードします.その後のandroid{}では、このファイル内のいくつかのものを使用することができます.使用方法は
properties.getProperty('chennelList', '')
で、最初のパラメータはkeyを表し、2番目はデフォルト値を表します.また、いくつかのgrovyコードを書いて、いくつかのコンパイル時のタスクを実行することもできます.例えば、task initChennel() {}
ここでgradleをコンパイルするときに私のtaskを追加して、現在のすべてのチャネルを獲得し、最後にプロファイルに書き込み、android{properties.getProperty('chennelList', '')}
を構成するときに理想的な値を与えることができます.// library
apply plugin: 'com.android.library'
//
final Properties properties = new Properties()
InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream()
properties.load(inputStream)
android{
...
}
// task ,
task initChennel() {
}
// UnitTest task
tasks.whenTaskAdded { task ->
}
buildConfigField
buildConfigField 'String', 'UMENT_CHANNEL', '"DEV"'
この主な役割は、プロジェクトがコンパイルされるとデフォルトでBuildConfigファイルが生成され、このコードが追加すると、BuildConfigが生成されると、クラス内に静的定数値が作成することを意味し、ここでは3つのパラメータ1が必要である.データ型2.属性名3.属性値
public static final String UMENT_CHANNEL = "DEV";
私たちのプロジェクトが大きい場合、多くのモジュールに分けて作業することがありますが、各モジュールエンジニアリングにはプライベートなbuildがあります.gradle構成情報は、このときにバージョンを統一しようとすると面倒になりますが、次から次へと変更するのは不便ですが、どうすればいいのでしょうか.ここにいるよgradleではこう書きました
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
私のところのこれらのバージョンの情報は公共の場所に置いてあり、すべてのサブプロジェクトが彼にアクセスして統一的に管理することができます.では、どのように使用しますか?プロジェクトのルートパスの下にbuildがあります.gradleファイル、その次男プロジェクトにはプライベートなbuildがあります.gradleファイルは、ルートディレクトリのbuild.gradleで作成すればいいです.以下を見て、みんなは少し考えて理解することができて、このような方式は更に多くの妙用があって、みんなは自分で発掘することができます
ext {
defaultPublishConfig = project.hasProperty('buildType') ? project.property('buildType') : 'debug'
buildToolsVersion = '27.0.1'
compileSdkVersion = 27
targetSdkVersion = 27
appVersionCode = 13
appVersionName = '1.0.13'
}