Android StudioカスタムGradle Plugin
4124 ワード
Android Gradle Plugin
Android Gradle Pluginには2つの形式があります直接build.gradle/作成x.gradleで開発 を実現する.
カスタムプラグインの開発方法について説明します
まずGradle Pluginプロジェクトを作成するテストを容易にするためにAndroidエンジニアリングを作成し、Android library Moduleエンジニアリング を作成します.
moduleの作成図中矢印で示すようなディレクトリおよびファイル を削除する.
無効なディレクトリの削除 に変更する.
Gradle Pluginをカスタマイズし、mainディレクトリの下にgroovyディレクトリを作成します.このディレクトリの下に独自のコードを作成します.
ログの削除を例に
Groovyプロジェクト構造
1.gradle
グラフィックインタフェース実行task
2.入力可能なGradleプラグインの作成
多くの場合、パラメータを入力し、パラメータに基づいて処理する必要があります.project.extensions.create(...,...); 前はName、後ろはModel、Modelでgralde scriptでキーを合わせるといいです.
そしてappの下のbuild.gradleで
または
入力の使用
3.mainの下に
内容:
4.ローカル・ウェアハウスへのパブリッシュ
現在のlibプロジェクトbuild.gradleでmavenサポートを追加
次に対応するmaven deployerを追加します
この設定は、前のディレクトリの
ローカルtaskにパブリッシュ
実行すると、
ローカル・ウェアハウスの表示
5.ローカル倉庫の使用
プロジェクトのbuild.gradleの
そしてappのbuild.gradleにpluginを追加
これらのすべての構成が正しい場合、同期項目はGradle Consoleでログに表示されます.
github demo
Android Gradle Pluginには2つの形式があります
Plugin
書き換えbuildプロセスカスタムプラグインの開発方法について説明します
まずGradle Pluginプロジェクトを作成する
moduleの作成
無効なディレクトリの削除
build.gradle
でgroovy方式 apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
Gradle Pluginをカスタマイズし、mainディレクトリの下にgroovyディレクトリを作成します.このディレクトリの下に独自のコードを作成します.
ログの削除を例に
Groovyプロジェクト構造
1.gradle
Plugin
を継承し、クラスの接尾辞はもはやである.JAvaではなくgroovy class DelLogPlugin implements Plugin {
@Override
void apply(Project project) {
project.extensions.create('dellogExtension', DelLogExtension);
project.afterEvaluate {
// gradle
project.logger.error("dellogExtension : " + project.dellogExtension.sourceDir);
def rootDir = project.projectDir.toString().plus(project.dellogExtension.sourceDir);
project.logger.error(rootDir);
DelLogUtil.delLog(new File(rootDir));
}
project.task('dellog', {
project.logger.error("dellogExtension : " + project.dellogExtension.sourceDir);
def rootDir = project.projectDir.toString().plus(project.dellogExtension.sourceDir);
project.logger.error(rootDir);
DelLogUtil.delLog(new File(rootDir));
})
}
}
afterEvaluate
はgradleの構築が完了すると自動的に実行されますが、taskは、コードのdellog
のような1つのプラグインに複数のTaskを手動で実行する必要があります.コンソールでgradle -q dellog
を実行することも、gradleグラフィックインタフェースで実行することもできます.グラフィックインタフェース実行task
2.入力可能なGradleプラグインの作成
多くの場合、パラメータを入力し、パラメータに基づいて処理する必要があります.project.extensions.create(...,...); 前はName、後ろはModel、Modelでgralde scriptでキーを合わせるといいです.
class DelLogExtension {
String sourceDir;
}
class DelLogPlugin implements Plugin {
@Override
void apply(Project project) {
project.extensions.create('dellogExtension', DelLogExtension);
......
そしてappの下のbuild.gradleで
dellogExtension.sourceDir = '/src'
または
dellogExtension {
sourceDir = '/src'
}
入力の使用
3.mainの下に
resources
ディレクトリを作成するsrc/main/resources/META-INF/gradle-plugins/com.branch.plugin.dellog.properties
xxx.properties
将来apply plugin:xxxプラグイン名として、ここのディレクトリ構造は間違いなく、META-INF
からgradle-plugins
まであります.内容:
`implementation-class=com.branch.dellog.DelLogPlugin( Plugin , )`
4.ローカル・ウェアハウスへのパブリッシュ
現在のlibプロジェクトbuild.gradleでmavenサポートを追加
apply plugin: 'maven'
repositories {
mavenCentral()
}
次に対応するmaven deployerを追加します
// maven deployer
uploadArchives {
repositories {
mavenDeployer {
// GAV
pom.groupId = 'com.branch.plugin'
pom.artifactId = 'dellog'
pom.version = '1.0.0'
//
repository(url: uri('../repo'))
}
}
}
この設定は、前のディレクトリの
repo
に公開され、gradle taskにuploadArchivesというtaskがあることを確認できます.ローカルtaskにパブリッシュ
実行すると、
repo
で対応するjarパッケージが表示されます.ローカル・ウェアハウスの表示
5.ローカル倉庫の使用
プロジェクトのbuild.gradleの
buildscript
にローカルウェアハウスアドレスを追加buildscript {
repositories {
jcenter()
maven {
url uri("/repo")
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.branch.plugin:dellog:1.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
そしてappのbuild.gradleにpluginを追加
apply plugin: 'com.branch.plugin.dellog'
これらのすべての構成が正しい場合、同期項目はGradle Consoleでログに表示されます.
github demo