記事ディレクトリ
Gradle ビルド スクリプトの基本と Groovy 言語の基本を学びます。
1.Gradleとは
定義: Gradle Groovy に基づくドメイン固有言語を使用して、プロジェクト設定を宣言します。
1.1 APK ビルド
リソースをコンパイルし、コードをコンパイルし、APK に署名します。
1.2 Gradle実行コマンド
./gradlew クリーン
./gradlew プロジェクト
./gradlew タスク
1.3 Gradle バージョンの変更、アップグレード、ダウングレード
コマンドライン操作: ./gradlew Wrapper --gradle-version 希望のバージョン番号
または、プロジェクト ディレクトリ内の gradle-wrapper.properties を直接変更します。
2. Android Studio で Groovy プログラムを実行する方法
この人のブログは以下を参照してください。
https://blog.csdn.net/Gdeer/article/details/83062523
2.1 単純な構文
class MyGroovy {
static void main(String[] args) {
//变量
int a = 10
def b = 10
println "a=$a"
println "b=$b"
//字符串
String str = "111aaaaaa1"
String str2 = str.toUpperCase()
println "str=$str"
println "str2=$str2"
//集合
def array = [1, 2, 2, 2]
println "array $array"
array.add(222)
array.each {
println it }
//map
def map = ["name": "1221", "age": 100]
println "$map"
println "${map["age"]}"
//循环
for (i in 0..<10) {
println i
}
hello(1111)
}
//方法
def hello(String name){
println name
}
}
2.2 高度な構文
DSL、クロージャ、クラス
クロージャ (関数式): パラメータを受け取り、戻り値を持ち、変数に割り当てることもできるオープンな匿名コード ブロック。
{[ params -> ] ステートメント }
class MyGroovy {
static void main(String[] args) {
def c = {
println 111
}
def c2 = {
it -> println it
}
c2(123)
def c3 = {
name1, name2 ->
{
println name1
println name2
}
}
c3(111, 222)
def list = [1, 2, 3, 4, 5]
list.each {
it ->
println it
}
}
}
DSL:
class MyGroovy {
static void main(String[] args) {
def android = {
compileSdkVersion 27
defaultConfig {
versionName "1.0"
}
}
Android a = new Android()
//将闭包与具体对象关联起来
android.dehydrate = a
android.call()
println ("$a")
}
}
class DefaultConfig {
private String versionName
def versionName(String versionName) {
this.versionName = versionName
}
@Override
String toString() {
return "DefaultConfig{ versionName = $versionName}"
}
}
class Android {
private int compileSdkVersion
private DefaultConfig defaultConfig
Android() {
this.defaultConfig = new DefaultConfig()
}
def compileSdkVersion(int compileSdkVersion) {
this.compileSdkVersion = compileSdkVersion
}
def defaultConfig(Closure closure) {
closure.setDelegate(defaultConfig)
closure.call()
}
@Override
String toString() {
return "Android{ compileSdkVersion = $compileSdkVersion,defaultConfig = $defaultConfig }"
}
}
2.3 Gradle は共通のスクリプト ファイルを構築します
設定.gradle
build.gradle
gradle.properties
2.4 ライフサイクル、シーケンス
初期化フェーズ
構成フェーズ
実行フェーズ
settings.gradle でテストする
gradle.addBuildListener(new BuildListener() {
@Override
void settingsEvaluated(Settings settings) {
println "Initialization phase completed"
}
@Override
void projectsLoaded(Gradle gradle) {
println "During the configuration loading process"
}
@Override
void projectsEvaluated(Gradle gradle) {
println "configuration complete"
}
@Override
void buildFinished(BuildResult buildResult) {
println "End of construction"
}
})
2.4 重要なディレクトリ、Gradle タスク
初期化フェーズ - ルート プロジェクト
構成フェーズ - プロジェクト
実行フェーズ - タスク