Android構築ツールGradleの知識2
9274 ワード
Gradle公式サイト:http://gradle.org/ DSL ReferenceはAPIに相当する
eclipseを使用してGradleプロジェクトを開発
以下のプラグインをダウンロードしました
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アプリケーションエンジニアリングが含まれています.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メソッドを使用してプロジェクトをインポートするサブプロジェクトが含まれているかを説明するために使用されますSettings.gradleはインポートできるほか、関数を設定できます
1.2 gradleコマンドの説明
1.gradle projects 1つのプロジェクトにどれだけのプロジェクトがあるかを表示します.setting.gradleに含まれるサブプロジェクト2.gradle project-path:tasksディレクトリ名:のタスクを表示します.省略できません.cdがサブプロジェクトフォルダに入っている場合は、パスを省略することができます3.gradle cleanはクリーンアップタスクを実行し、make cleanと同様に4.gradle properitesはすべての属性情報を表示します5.gradle tasksは各taskの詳細Taskの間に依存関係があり、assemble taskは他のtaskに依存して先に実行し、assembleは最終出力します
2.GradleワークフローGradleは3つのフェーズを含む:1.初期化フェーズ、setting.gradle 2.構成フェーズを実行し、各サブプロジェクトのbuild.gradleを解析し、task関係を構築する有向図3.タスクの実行
3.GradleプログラミングモデルとAPIGradleのライフサイクル3.1 GradleオブジェクトProject.getGradle()でGradleオブジェクトを取得できる
両者で得られたgradleオブジェクトのhashcodeは、build.gradleでgradleHomeDir、gradleUserHomeDir、parentを呼び出すのと同じ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を表す)
eclipseを使用してGradleプロジェクトを開発
以下のプラグインをダウンロードしました
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アプリケーションエンジニアリングが含まれています.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メソッドを使用してプロジェクトをインポートするサブプロジェクトが含まれているかを説明するために使用されますSettings.gradleはインポートできるほか、関数を設定できます
1.2 gradleコマンドの説明
1.gradle projects 1つのプロジェクトにどれだけのプロジェクトがあるかを表示します.setting.gradleに含まれるサブプロジェクト2.gradle project-path:tasksディレクトリ名:のタスクを表示します.省略できません.cdがサブプロジェクトフォルダに入っている場合は、パスを省略することができます3.gradle cleanはクリーンアップタスクを実行し、make cleanと同様に4.gradle properitesはすべての属性情報を表示します5.gradle tasksは各taskの詳細Taskの間に依存関係があり、assemble taskは他のtaskに依存して先に実行し、assembleは最終出力します
2.GradleワークフローGradleは3つのフェーズを含む:1.初期化フェーズ、setting.gradle 2.構成フェーズを実行し、各サブプロジェクトのbuild.gradleを解析し、task関係を構築する有向図3.タスクの実行
3.GradleプログラミングモデルとAPIGradleのライフサイクル3.1 GradleオブジェクトProject.getGradle()でGradleオブジェクトを取得できる
build.gradle setting.gradle
println "build"+gradle.hashCode()
println "setting"+gradle.hashCode()
:
両者で得られたgradleオブジェクトのhashcodeは、build.gradleでgradleHomeDir、gradleUserHomeDir、parentを呼び出すのと同じ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を表す)