React Native の Android のビルドで SDK Build Tools のバージョンが低すぎると怒られた場合

React Native の Android のビルドで SDK Build Tools のバージョンが低すぎると怒られた場合の対処方法です。

状況

React Native でネイティブコードを含むライブラリを追加したところ、Android のビルド時に以下のようなエラーが発生しました:

Error:The SDK Build Tools revision (23.0.3) is too low for project ':react-native-google-signin'. Minimum required is 25.0.0

超訳すると、「SDK Build Tools のリビジョン(23.0.3)が低すぎるので、25.0.0 以上にしなさい」とのことです。

どうやら、自分が作っているアプリの build.gradle の設定で com.android.tools.build:gradle:2.3.2buildToolsVersion の 25.0.0 以上を要求しているようです。

対処方法1

com.android.tools.build:gradle:2.2.3 にダウングレードすると buildToolsVersion が 25.0.0 よりも下でもエラーにならないようです。

でも、せっかく新しいバージョンがあるのにダウングレードするのは少し気が引けますね。

対処方法2

エラーメッセージの通りに各ライブラリの buildToolsVersion を 25.0.0 以上に変更することで対処できます。

ただし、各ライブラリのファイルは通常、リポジトリから除外されているので、再インストール時には同じ設定を再度行う必要があります。

対処方法3

自分が作っているアプリ側で各ライブラリの buildToolsVersion を強制的に変更します。

それには以下のコードを android/build.gradle に入れます:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 25
                buildToolsVersion '25.0.0'
            }
        }
    }
}

各バージョンは適宜変更してください。

注意点は、ライブラリ側でこれよりも高いバージョンを指定している場合は低いバージョンに変更されてしまうということです。

Ref. SDK Build Tools revision (23.0.1) is too low for project :react-native-keychain. · Issue #68 · oblador/react-native-keychain

どの方法を選ぶか?

それぞれ一長一短あるので選択が難しいですが、そもそもはライブラリ側の指定が古いのが原因なので、ライブラリ側が対応すれば直る過渡期的な問題と考え、2番目の方法を取ることにしました。