AndroidX に移行すると android.support.v8.renderscript が使えなかった話
趣味で作っているアプリを、せっかくだから targetSdkVersion を 28 にして AndroidX で Kotlin でマルチ module で作ってやるぜ〜と思ったのですが、画像にぼかしをかけるのに使用していた android.support.v8.renderscript
が AndroidX にすると使えなくなってしまいました。
そもそも support-v8 のようなものはもともと依存関係に追加しておらず、どうやって依存が解決されていたのかわかっていませんが、検索しても androidx.legacy:legacy-support-v8:1.0.0
のようなものは見つかりません。
いろいろ調べているうちに androidx.renderscript
というパッケージに移動されたということがわかったのですが、これを import しても依存は解決できずにコンパイルが通りませんでした。
もっと調べると Android Issue Tracker に起票されている既知の不具合のようでした。
Issue: https://issuetracker.google.com/issues/111948805
詳細は issue に書いてあるので読んでください。 Build tools に不具合があったようで、修正できたようなのでそのうちアップデート版の Build tools に取り込まれるようです。 28.0.3 で来ればいいですが、さらに先になる可能性もありますね。
そのアップデートが来るまで待とうかと思ったのですが、 Android Developers の RenderScript のページに次のように有りました。
引用: https://developer.android.com/guide/topics/renderscript/compute#access-rs-apis
When developing an Android application that uses RenderScript, you can access its API from Java in one of two ways:
- android.renderscript - The APIs in this class package are available on devices running Android 3.0 (API level 11) and higher.
- android.support.v8.renderscript - The APIs in this package are available through a Support Library, which allows you to use them on devices running Android 2.3 (API level 9) and higher.
サポートライブラリを使用しない android.renderscript
パッケージは API level 11 以上がサポートされていました。
サポートライブラリを使用すれば API level の要件を 9 以上に引き下げられますが、趣味で作っているアプリなのでそもそも minSdkVersion は 21 に設定しているので…
ということで、 android.renderscipt
を直接使用するように import を書き換え、無事コンパイルできるようになりました。