Gradle ビルド スクリプトの基本と Groovy 言語の基本を学びます。

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 タスク

初期化フェーズ - ルート プロジェクト

構成フェーズ - プロジェクト

実行フェーズ - タスク

おすすめ

転載: blog.csdn.net/weixin_46039528/article/details/132515435