AndroidXへの移行
Androidアプリケーションのレイアウトを司るライブラリは、現在AndroidXになっています。しかし、昔は古いライブラリを使用していました。私が初期に作成した「さっぽろ周辺マップ」も、古いライブラリのまま使ってきました。
そして「さっぽろ周辺マップ ライト2」をリリースするにあたり、内部テストをしていたのですが、実機やエミュレーターでは問題なく動いていたのですが、リリース前レポートで以下のエラーが発生していました。
at android.support.v7.widget.c$d.setFrame(Unknown Source:60)
どうやら、古いライブラリを使うと3機種ほどのスマートフォンで問題が起こるようです。ここは一気にAndroidXに移行してしまうのが得策と考え、修正しました。
1.build.gradleの修正
build.gradleを修正します。バージョン番号は適度に修正してください。
古いライブラリを削除
implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3'
新しいライブラリを追加
implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
2.レイアウトの修正
constraintlayoutに変更します。
古いレイアウトを削除
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
・・・・
</RelativeLayout>
※RelativeLayout以外も使っていました
新しいレイアウトを追加
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
・・・・
</androidx.constraintlayout.widget.ConstraintLayout>
3.Activityの変更
古いライブラリを削除
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
新しいライブラリを追加
import androidx.appcompat.app.AppCompatActivity;
4.gradle.properties
以下の2行を加えます。
android.useAndroidX=true
android.enableJetifier=true
5.動作結果
ここに載せた修正以外にも、プロジェクトによっては修正が必要になるでしょう。
やってみると、ビルドが通って、外見上は特に変更がない状態で起動もできました。内部テストのエラーも消えました。面倒な作業でしたが、もしかしたらRefactorで変更できるのかもしれません。東京周辺マップの時は、何か自動でやった記憶があったのですが、思い出せませんでした(結局はトラブルだらけだったのですが)。
Android開発android.support.v7.widget,AndroidX,Androidレイアウト,build.gradle,constraintlayout,gradle.properties
Posted by kunimiyasoft
関連記事
CameraXライブラリを使ってカメラアプリケーションを作る
これまでに、Android Camera2ライブラリを使ってカメラアプリケーショ ...
Android Studioでファイル一覧を確認したい!
Androidでアプリ開発をしていると、Windowsでは簡単だったファイルの入 ...
Androidのファイルマネージャー X-plore File Manager
Android端末を使っていると、ファイルをコピーしたり移動、削除したい場合があ ...
Androidアプリ作成講座 6-SurfaceViewがイベントを受け取れるようにする
今のままではSurfaceViewにイベントが飛んできません。そこで、起動や変更 ...
Androidアプリ作成講座 11-円移動のソース
円移動の全ソースを載せます。勢いで作ったので良いソースではありませんが、参考にし ...