Android構築ツールGradleの知識2

9274 ワード

这里写图片描述Gradle公式サイト:http://gradle.org/ DSL ReferenceはAPIに相当する
eclipseを使用してGradleプロジェクトを開発Android构建工具Gradle知识2_第1张图片Android构建工具Gradle知识2_第2张图片Android构建工具Gradle知识2_第3张图片
以下のプラグインをダウンロードしました
Download https://jcenter.bintray.com/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.pom Download https://jcenter.bintray.com/org/apache/commons/commons-parent/39/commons-parent-39.pom Download https://jcenter.bintray.com/org/apache/apache/16/apache-16.pom Download https://jcenter.bintray.com/com/google/guava/guava/20.0/guava-20.0.pom Download https://jcenter.bintray.com/com/google/guava/guava-parent/20.0/guava-parent-20.0.pom Download https://jcenter.bintray.com/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar Download https://jcenter.bintray.com/com/google/guava/guava/20.0/guava-20.0.jar Download https://jcenter.bintray.com/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1-sources.jar Download https://jcenter.bintray.com/com/google/guava/guava/20.0/guava-20.0-sources.jar
Gradleの基本的な知識を紹介します.1.基本コンポーネントGradleでは、コンパイルするプロジェクトごとにProjectと呼ばれています.各プロジェクトは、構築時に一連のTaskを含む.Android APKコンパイルには、JavaソースコンパイルTask、リソースコンパイルTask、JNIコンパイルTask、LintチェックTask、パッケージ生成APK Task、署名Taskなどが含まれます.具体的なコンパイル作業はプラグインで完了します.1.1一例posdeviceというディレクトリで、3つのAndroid Libraryエンジニアリング、2つのAndroidアプリケーションエンジニアリングが含まれています.Android构建工具Gradle知识2_第4张图片3ライブラリ事業CPosDeviceSDK CposSystemSdk CposSystemSDkxxxImpl 2アプリケーション事業CPosDeviceServer Apk CPosSdkDemo
各LibraryとAppには独立したProjectがあり、ルートディレクトリの下にbuild.gradleがあります.Projectのコンパイルスクリプトはmakefileファイルに似ています.
Androidではgradle assembleを実行して5つのProjectをすべてコンパイルするにはMulti-projects Buildを借りてどうすれば実現できるのでしょうか.1.プロジェクトにbuild.gradleを追加します.その役割は、他のサブプロジェクトのプロパティを構成することです.2.プロジェクトにsetting.gradleを追加します.名前はsetting.gradleでなければなりません.このmultiprojectsには、includeメソッドを使用してプロジェクトをインポートするサブプロジェクトが含まれているかを説明するために使用されますAndroid构建工具Gradle知识2_第5张图片Settings.gradleはインポートできるほか、関数を設定できますAndroid构建工具Gradle知识2_第6张图片
1.2 gradleコマンドの説明
1.gradle projects 1つのプロジェクトにどれだけのプロジェクトがあるかを表示します.setting.gradleに含まれるサブプロジェクトAndroid构建工具Gradle知识2_第7张图片2.gradle project-path:tasksディレクトリ名:のタスクを表示します.省略できません.Android构建工具Gradle知识2_第8张图片cdがサブプロジェクトフォルダに入っている場合は、パスを省略することができます这里写图片描述3.gradle cleanはクリーンアップタスクを実行し、make cleanと同様に4.gradle properitesはすべての属性情報を表示します5.gradle tasksは各taskの詳細Taskの間に依存関係があり、assemble taskは他のtaskに依存して先に実行し、assembleは最終出力します
2.GradleワークフローAndroid构建工具Gradle知识2_第9张图片Gradleは3つのフェーズを含む:1.初期化フェーズ、setting.gradle 2.構成フェーズを実行し、各サブプロジェクトのbuild.gradleを解析し、task関係を構築する有向図3.タスクの実行
3.GradleプログラミングモデルとAPIAndroid构建工具Gradle知识2_第10张图片Gradleのライフサイクル3.1 GradleオブジェクトAndroid构建工具Gradle知识2_第11张图片Project.getGradle()でGradleオブジェクトを取得できる
      build.gradle    setting.gradle   
  println "build"+gradle.hashCode()
  println "setting"+gradle.hashCode()
    :

Android构建工具Gradle知识2_第12张图片
両者で得られたgradleオブジェクトのhashcodeは、build.gradleでgradleHomeDir、gradleUserHomeDir、parentを呼び出すのと同じAndroid构建工具Gradle知识2_第13张图片HomeDirはgradleのパスであるUserHomeDirはパソコン上でgradleが設定した場所であり、キャッシュファイル、クラスファイル、プラグインが格納されている
3.2 Projectオブジェクトbuild.gradleごとにProjectオブジェクトが生成されます.プロジェクトでは、1.プラグインをロードします.2.プラグインを構成します.3.プラグインのプロパティを設定します.
1.プラグインのロード:プラグインをロードするプロセスはapplyメソッドを呼び出すことから始まり、projectはPluginawareインタフェースを実現した.Apply(map『String,?』option)Groovyは、呼び出しメソッドがパラメータ名:パラメータ値、パラメータ名:Apply plugin:’com.android.library’Apply plugin:’com.android.application’などのパラメータ値を渡すことをサポートします.
一般的な関数をutils.gradleファイルに入れ、他のプロジェクトのbuild.gradleにApply from:rootProject.getRootDir().getAbsolutePath(+)/utils.gradle」をロードさせることができます.
2.プロパティの設定Gradleはextra property設定の追加プロパティを提供し、初めてプロパティを定義するときにextを通過します.定義したら、後のアクセスにext接頭辞は必要ありません.extプロパティはProjectオブジェクトとGradleオブジェクトをサポートします.
def initGradle(){Properties pro=new Properties()File profile=new File(rootDir.getAbsolutePath()/local.properties")pro.load(profile.newDataInputStream()//外付け属性gradle.ext.api=pro.getProperty('sdk.api’)println gradle.api//第2回使用ext}
3.Task紹介TaskはGradleのデータモデルで、異なるプラグインは異なるTaskを追加することができます.各Taskはプロジェクトに関連付ける必要があります.Task.mytask//新しいTaskの名前Task.myTask{configure.closre}Task.myType.doLast{task action}Task.myTask{type:SomeType}Task.myTask{type:SomeType}{configure closure}
1つのtaskにはいくつかのActionが含まれているので、TaskにはdoFirstとdoLastの2つの関数があります.先に実行し、最後に実行したactionを表します.Actionは閉パッケージです.
Task作成時にTypeを指定し、type:名前で表現します.新しいTaskオブジェクトはそのベースクラスTaskから派生します.たとえば、CopyはGradleのクラスです.Task myTask(type:Copy)の場合、作成したTaskはCopy Taskです.
task myTask{xxx}カッコで閉じたパッケージを使用します.gradleがこのTaskを作成した後、ユーザーに戻る前に、閉パッケージの内容を実行します.
task myTaskの『{xxx}を使用してTaskオブジェクトを作成し、同時に閉パケットをactionとしてactionキューに追加し、Taskが最後にこの閉パケットを実行したことを伝える『(doLastを表す)Android构建工具Gradle知识2_第14张图片