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ライブラリを使ってカメラアプリケーショ ...
プログラムの話 オブジェクト指向を理解する
それでは、スマートフォンのアプリケーションを作るために必要なことを考えてみます。 ...
プログラムの話 SEを目指すならUMLをマスターしよう
仕事にプログラマーやシステムエンジニアを選ぶ場合は、UMLをぜひ理解しておきたい ...
Androidアプリ作成講座 3-エミュレーター環境を作る
アプリケーションができたら、動作確認を行います。一番いい方法は、自分の持っている ...
Androidアプリケーションのレイアウトについて
地図アプリケーション「日本周遊マップ」はGoogle Playの審査を通って公開 ...