やりたいこと
だいぶ前に作ったAndroidのアプリがあります。
最終更新が2015年のアプリと2016年のアプリです。
この古いアプリのターゲットをAndoroid10(APIレベル29)に変更することが目的です。
Googleから2020年11月2日までにターゲットにAndroid10を含めてねというメールが来たためとなります。
Googleからのメールには
移行ガイドのリンクが張ってあったのですが、そのページをみても具体的にどうすればよいのかよくわかりませんでした。
そこで、ひとまず古いアプリのプロジェクトをAndroid Studio 4.0.1で開いてみたのですが、よくわからないエラーがいろいろでてきました。
ググりながらなんとか立ち上がるところまでできたので、手順を記録しておきます。
環境
OS : Windows10 1909
IDE : Android Studio 4.0.1
古いAndroidアプリの情報
compileSdkVersion 21
buildToolsVersion "21.1.2"
minSdkVersion 9
targetSdkVersion 21
やったこと① バックアップ
失敗すると悪いので、いったん昔のプロジェクトのフォルダをコピーしてから作業をしました。
やったこと② 開く
Android Studioでプロジェクトを開く。
開くとConvertProjectのメッセージが表示されたので、Convertボタンを押す。
そのあと、Android SDKのパスも前と違うよというメッセージが表示されました。
これはSDKのパスを以前と変えたのででたようです。通常は表示されないです。
やったこと③ versionを修正
build.gradleのバージョンを最近作ったアプリのバージョンに合わせました。
compileSdkVersion 29
buildToolsVersion "30.0.0"
minSdkVersion 16
targetSdkVersion 29
build.gradleのclasspathのバージョンも修正
classpath 'com.android.tools.build:gradle:4.0.0'
gradle-wrapper.propertiesのdistributionUrlを修正
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
このあたりはあまり深く考えずにやってみました。
やったこと④ Migrate to AndroidX
appcompat-v7, support-v4が解決できないみたいなエラーがでているので、これを解消するために下記の手順を実施しました。
Refactorメニュー - Migrate to AndroidX... を選択する。
次のメッセージが表示されるので、Migrateボタンを押す。
※backup project as Zip fileをONにしておくと、バックアップしてくれます。不要ならOFFにします。
この段階だとまだMigrateは完了してないです。Migrateするために、Do Refactorボタンを押します。
ステータスバーがくるくるしてちょっと待つと終わります。
やったこと⑤ compileを修正
compileを直した方がよいようなので修正しました。
マウスカーソルを合わせると電球のマークが表示されるので、そこからcompileをimplementationに置き換えるメニューを選択すると直してくれます。
やったこと⑥ ActionBarActivityをおきかえ
ActionBarActivityを使っていたのですが、そこでエラーがでてたので、AppCompatActivityに置換しました。
//import android.support.v7.app.ActionBarActivity;
import androidx.appcompat.app.AppCompatActivity;
~途中省略~
//public class MainActivity extends ActionBarActivity implements SensorEventListener {
public class MainActivity extends AppCompatActivity implements SensorEventListener {
おわり
ここまでやったところ、エラーの表示がなくなり、エミュレーターで起動できるようになりました。
自分のアプリはこれで解決しましたが、使ってるクラスや機能によって⑥以降は違ってくるはずです。