Edited at

Android Jetpackのリリース前のバージョンを使う方法


概要

先日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-alpha02RoomのFlow対応も使えました! :tada: )

(Roomで自動生成されたコード)

image.png