Gradleの基礎知識
3612 ワード
Gradleの依存度は次のとおりです. implementation api(Gradle 3.0以前のcompileに相当) compileOnly(Gradle 3.0以前のprovidedに相当) runtimeOnly(Gradle 3.0以前のapkに相当) ここでimplementationおよびapiは、debug、release、またはtest宣言、例えばdebugApiを前に追加することができる.
詳細: implementation依存を使用すると、構築時間を短縮できます.たとえば、Module A implementation Module B、Module B implementation Module Cなどです.この場合、Aは参照できません.Cが変更された場合、Aは再コンパイルする必要はありません. apiの依存性を使用するか、または上記の例では、AはCの内容を参照することができる. compileOnlyの依存はコンパイル時のみ使用可能で、apk(アノテーションプロセッサなど) にパッケージされません. runtimeOnlyの依存コンパイルでは使用できません.apk にパッケージされます.
基本構文
第一手資料Groovy API,Gradle Doc
以下に、Javaと比較的大きな違いがある一般的なものをいくつか示します. with、オブジェクトに を割り当てる pythonと類似の判断trueまたはfalse kotlin類似の判空 eachを使用してMapまたはList を巡回する XmlParser解析Xml android studioでGroovyを直接実行し、コマンドgradlew test を使用します.
その他の基礎文法:Groovyクイック入門ガイドGradleスクリプト基礎全攻略
Gradleライフサイクルと実行順序
Gradleのライフサイクルは、Initialization、Configuration、Executionの3つの段階に分けられます.まずsettingsを解析する.gradleはモジュール情報(Initializationフェーズ) を取得する. configureプロジェクトのtop-levelのbuild.各moduleのbuildをconfigureします.gradleは、構成時にtaskを実行する、module実行configureが終了するとprojectを実行する.afterEvaluate(Configurationフェーズ) configure順に実行(Executionフェーズ)
詳細学習:Gradleベース-ライフサイクルとHookテクノロジーの構築
常用Api
Taskの定義第1の態様
1つのtaskを実行すると、taskの構成が先に実行され、doFirstはtaskが実行を開始する前に実行され、doLastは実行後、どちらもtask構成の後に実行されます.いずれのtaskを実行するにも、最初に構成する必要があるからです.各taskが実行される前に、完全な構成が必要です.第2の態様
@TaskActionはtaskが実行するアクションを表します第3の態様
Task依存
gradlew taskAを実行し、結果を印刷
1つのTaskが実行される前に依存するTaskを実行し、doFirstとdoLastを複数回実行することができる.
Gradleコマンド: gradlew project:プロジェクトmodule名 がリストされます. gradlew build:build操作を実行する gradlew taskname:task を実行 gradlew-x taskname:build操作を実行するがtask を除外する gradlew tasks:プロジェクト内のすべてのタスク をリストします. gradlew help–task taskname:taskの詳細を表示する Gradleログ・レベル Errorエラーレベル Quiet重要レベル Warning警告レベル LifeCycle進捗情報 Info情報性情報 Debugデバッグ情報 gradlew-q tasknameはログ出力レベルを制御できます
詳細:
基本構文
第一手資料Groovy API,Gradle Doc
以下に、Javaと比較的大きな違いがある一般的なものをいくつか示します.
obj.with {
name = "android"
phone= "145555555"
}
if (str) { }
obj?.setData()
map.each {
println "map:[${it.key} : ${it.value}]"
}
def xml = new XmlParser().parse(new File("test.xml"))
// view name
println xml['view'].@name[0]
task(test).doLast {
println "start execute yuangshuo"
getString()
}
def getString() {
}
その他の基礎文法:Groovyクイック入門ガイドGradleスクリプト基礎全攻略
Gradleライフサイクルと実行順序
Gradleのライフサイクルは、Initialization、Configuration、Executionの3つの段階に分けられます.
//
setting##init
top-level##init
app##init
app##afterEvaluate
common##init
app##task
詳細学習:Gradleベース-ライフサイクルとHookテクノロジーの構築
常用Api
Taskの定義
task myTask {
println "config myTask"
}
myTask.doLast {
println "after execute myTask"
}
myTask.doFirst {
println "before execute myTask"
}
1つのtaskを実行すると、taskの構成が先に実行され、doFirstはtaskが実行を開始する前に実行され、doLastは実行後、どちらもtask構成の後に実行されます.いずれのtaskを実行するにも、最初に構成する必要があるからです.各taskが実行される前に、完全な構成が必要です.
class MyTask extends DefaultTask {
@TaskAction
def hello() {
println "Hello world."
}
}
task taskname(type : MyTask)
@TaskActionはtaskが実行するアクションを表します
project.task('myTask').doLast {
println "after execute myTask"
}
Task依存
task taskA(dependsOn: 'taskB') {
doLast {
println 'taskA'
}
}
task taskB {
doLast {
println 'taskB#1'
}
}
taskB.doLast {
println 'taskB#2'
}
gradlew taskAを実行し、結果を印刷
> Task :app:taskB
taskB#1
taskB#2
> Task :app:taskA
taskA
1つのTaskが実行される前に依存するTaskを実行し、doFirstとdoLastを複数回実行することができる.
Gradleコマンド: