概要
先日RoomのFlow対応がマージされていたりして、いち早く新しいバージョンを使いたいことと思っていました。
https://android-review.googlesource.com/c/platform/frameworks/support/+/944458
2.2.0-alpha02.txtというファイルをいじっているので、2.2.0-alpha02にてリリースされそうだなと思いみていたら面白そうなリポジトリを発見しました。
https://android.googlesource.com/platform/prebuilts/androidx/internal/+/refs/heads/androidx-master-dev
ここを見ていくとここに最新バージョン(リリース前)のaarが上がっているようです。
(internalになっていますが、apache licenseのファイルおいてあるので大丈夫なはず。。)
これを使ってみようと思います。
手順
androidx-master-devブランチの最新のコミットのみとってきたいので以下のように取得します。
git clone --depth 1 -b androidx-master-dev https://android.googlesource.com/platform/prebuilts/androidx/internal
そしてpom.xmlの中でのversion指定が<version>[1.1.0-alpha02]</version>
のように[]
で囲まれてしまっているのでそれを外します
cd internal
find . -name "*.pom"|xargs sed -i -e "s/<version>\[\(.*\)\]<\/version>/<version>\1<\/version>/"
使いたいAndroidプロジェクトのbuild.gradleで、そしてクローンしたリポジトリのパスをrepositoriesで指定します。(buildScriptの方と、それぞれのプロジェクトの方両方で行います)
repositories {
maven {
url "/Users/takahirom/git/internal" // コピペではなく自分のパスへ
}
そしてMatching repositories to dependenciesの機能を使って、このinternalリポジトリに含まれるものをGoogleのリポジトリから取得しないようにします。
google().content{
excludeGroupByRegex("androidx\\.(?!databinding)(?!constraintlayout).*")
}
これでdependencyブロックにて使いたいバージョンの依存関係を使うことができました!
(androidx.room:room-ktx:2.2.0-alpha02
RoomのFlow対応も使えました! )
(Roomで自動生成されたコード)