前回、下記のエントリを書きましたが、
Android コルーチンを便利に利用するためのviewModelScopeが読み込めない
その後、下記のようなエラーが出て、ビルドできなくなりました。
java.lang.RuntimeException: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory)
AndroidXを使おうと思うと、gradle.propertiesに
android.enableJetifier=true
android.useAndroidX=true
と書くと、今までのライブラリが使えなくなります。
たとえば
import android.support.v7.app.AppCompatActivity
のままではAppCompatActivityが使えなくなり
import androidx.appcompat.app.AppCompatActivity
に置き換えないといけません。
これらを全部importするところは手でやらないといけないので、パッケージ内のコード量が多い場合は、よく考えないといけないですよ!!?
さっきの
という記事での、このようなimport時に古いAPIを読み込んじゃうようなことは防げますね。
ちな、下記のAndroidの公式サイトでは
https://developer.android.com/jetpack/androidx/migrate?hl=ja
Android Studio 3.2 以上では AndroidX を使用して既存のプロジェクトを迅速に移行できるようになりました。移行するには、メニューバーから [Refactor] > [Migrate to AndroidX] を選択します。
って書いてあるんですが、やるとbuild.gradleをきれいにしてくれるのと、レイアウトのxmlファイルを書き直してくれます。xmlファイルは
<android.support.v4.widget.DrawerLayout
↓
<androidx.core.widget.DrawerLayout
のような書き直しを全部でやらないといけないので、自動でやってくれるのは大変助かります。
しかし、プログラム部分は手動で新しいAPIをインポートしないといけないのは変わりありませんでした…。(>_<)
それにしても、こういうビルドできない問題にかける時間や苦しみがすごいですよね。
早く、俺にプログラム書かせてくれってばよ。
というわけで、これからAndroidアプリを作ろうという人は、最初っからAndroidXで作った方がいいです。(重要なことなので、太字にしました)