Gradleシリーズ(1)Gradle入門紹介およびGroovy基本文法紹介


このシリーズの記事は、Android Gradleプロジェクトの一般的な知識点についてまとめたもので、プロジェクト構築スクリプトでよく使われています.文中の内容の大部分は、著者が『Android Gradle権威ガイド』を勉強している間にまとめた学習ノートで、文中の内容があなたに役に立つか、不適切なところがあると思ったら、貴重なアドバイスと伝言を残してください.最後にgradleという知識について、時間が許せば「Android Gradle権威ガイド」を読むことを強くお勧めします.
Gradleシリーズ(1)Gradle入門紹介およびGroovy基本文法紹介Gradleシリーズ(2)Taskの紹介と使い方Gradleシリーズ(3)Gradleプラグインの役割および使い方Gradleシリーズ(4)Android Gradle未完、、
1、Gradle基本入門紹介
  • 1、gradle/wrapper
  • (1)wrapperはgradleのパッケージであり、チーム開発中にGradleの構築バージョン
  • を統一するのに便利である.
  • (2)生成wrapper:プロジェクトのルートディレクトリでgradlew wrapper(macで./gradlew wrapper)コマンド
  • を実行する.
  • 2、gradle常用コマンドライン
  • (1)実行可能なすべてのタスクgradlew tasks
  • を表示
  • (2)taskのヘルプ情報gradlew help--task:your_taskName
  • (3)依存gradlew–refresh-dependencies assembleを強制的にリフレッシュするキャッシュによって引き起こされた、依存ライブラリはコードの中で実行後に依存するか古いバージョンに依存するかの問題を修正した.


  • 1、Groovy基本文法
  • GroovyはJavaと完全に互換性があり、buildスクリプトファイルにjavaコードを書くことができ、非常に柔軟で便利です.
  • 1、文字列
  • (1)Groovyの一重引用符二重引用符は文字列
  • を表すことができる.
  • (2)区別:単一引用符の文字列には演算能力がなく、二重引用符の文字列には演算能力がある.
  • 列子:
  •    def name = " "
       println ' : ${name}'
       println " : ${name}"
    
        :
        : ${name}
        :  
    

  • 2、集合
  • (1) List
        task pintList{
            def numList = [1,2,3,4,5,6,7]
            println numList.getClass().name
            println numList[1] /// 
            println numList[-1] /// 
            println numList[-2] /// 
            println numList[1..3] /// 
    
            /// each 
            numList.each{
                println it
            }
        }
    
  • (2) Map task printlnMap{ def map1 = [‘width’: 1024, ‘height’:768] println map1.getClass().name
      println map1['width']
      println map1.height
    
      map1.each{
          println "Key:${it.key}, Value:${it.value}"
      }
    
    }

  • 3、関数
  • Groovyにおける関数の定義宣言の構文は,kotlinメソッドの宣言や定義のような他の関数プログラミング言語向けの構文と非常に類似している.
  • (1)関数の括弧は省略可能な
        task invokeMethod{
            method1(1,2)
            method1 1,2 /// 
        }
        def method1(int a, int b){
            println a+b
        }
    
  • である.
  • (2)returnキーワードは省略可能な
      task printlnMethodReturn{
          def add1 = method2 1,2
          def add2 = method2 5,3
          println "add1:${add1},add2:${add2}"
      }
      def method2(int a, int b){
          if(a>b){
              a
          }else{
              b
          }
      }
    
  • である.
  • (3)コードブロックはパラメータ伝達として用いることができるが,これが閉パケットパラメータの用法
        ///numList List
        numList.each({ println it})
    
        /// , 
        numList.each(){
            println it
        }
    
        /// , 
        numList.each{
            println it
        }
    
  • である.
  • 4、閉パッケージ
  • 閉パケットは、実はコードブロック
  • である.
  • (1)集合のeach法は既に用いられているが,以下ではそれを例に,同様の閉パケット機能を実現する.
      task helloClosure{
          customEach{
              println it
          }
      }
    
      def customEach(closure){
          /// , 
          for( int i in 1..10){
              closure(i) ///  { println it}  
          }
      }