Gradleフレーバに3つの設定を追加しました。そして私はそれらにいくつかのジップ依存性を追加します。 preBuildの後にこのzipファイルを解凍します。 問題は、私のunzipタスクが常にgradleファイルを実行していたり、依存関係が変更されていないことです。この解凍作業には時間がかかり、ndkアプリケーションを開発しています。私が解凍タスクで静的ライブラリを変更するたびに、gradleはライブラリが変更されたと考えて、再度ビルドします。Gradleは常にタスクを実行します
gradleファイルが変更されていない場合、unzipタスクの実行をブロックしたいと思います。これは少しのキャッシュメカニズムのようです。ここに私のgradleの仕事です。
dependencies {
compile "com.google.android.gms:play-services:9.4.0"
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:appcompat-v7:24.+'
compile 'com.android.support:design:24.+'
compile fileTree(dir: 'src/main/libs', include: ['*.jar'])
alphaCompile 'my alpha release static library from private maven repository in zip type'
betaCompile 'my beta release static library from private maven repository in zip type'
prodCompile 'my prod release static library from private maven repository in zip type'
}
task unzip(group: "Static Libraries", description: "Unzip all static libraries") {
doFirst{
// get zip files from configurations
// unzip and move static libraries to destination folder
}
}
}
preBuild.finalizedBy (unzip)
あなたの質問から最も重要な部分、つまり 'doFirst'メソッドの本体を除外しています。タスクに入力/出力を宣言していないので、Gradleは最新のチェックについて知ることができません。 – mkobit
さて、私はgradleのライフサイクルを学ぶ必要があることを理解しています。私はgradleのドキュメントを見ましたが、それは複雑に見えます。doFisrt()で自分のカスタムタスクにI/Oを定義するにはどうすればいいですか? –
あなたはタスク定義のために '{}'ブロックにあなたのタスク_configuration_を定義したいと思っています。この部分は_configuration_フェーズで実行されます。設定を定義すると、問題が発生します([ユーザガイドのこのページ](https://docs.gradle.org/current/userguide/potential_traps.html#mkdirTrap)を参照))。私はちょっと質問に答えようとします。 – mkobit