最先端技術は日進月歩です。日常欠かせないスマホも日々進化しており、それを支える開発ツールであるAndroid Studioも、定期的にアップデートを行わないと、最新の機能やデバイスに対応できなくなることがあります。
先日、アプリの動作がある特定のデバイス上で想定通りにならず、Android Studioでデバッグしようとしたところ、エラーが発生してしてデバックできませんでした。原因を調べてみると、開発環境が古いことが原因とのこと。たった3年の差でも、技術の進化に追いつけていないことを知り驚きました。
とはいえ、Android Studioのアップデートは進化しており、アップデート自体はそれほど難しくありませんでした。ただし、アップデート後のアプリのビルドでは、Javaの最低バージョンや使用しているライブラリ間の依存関係が変わるなど、少し手間がかかります。それでも、アップデートしなければ動かなくなるのなら、早いか遅いかだけで、いずれ通らなければならない道です。そんな私のような腰が重いおじさん世代の開発者の方々が、「そろそろやってもいいかな」と思えたときの手助けになるように、なるべくわかりやすく解説しました。ぜひ参考にしてみてください!
Android Studioインストーラーのダウンロード
私がインストールしているAndroid Studioのバージョンを調べてみると、「Chipmunk 2021.2.1 Patch 2」でした。
Android Studio の「ヘルプ」-「アップデート確認」をクリックします。
右下に以下のような小さな画面が表示されますので、「アップデート」をクリックします。
以下のようなダイアログが表示されますので、「アップデート」をクリックします。
以下のようなサイト画面が表示されますので、「Android Studio Ladybugをダウンロード」をクリックします。インストーラーファイル(android-studio-2024.2.1.11-windows.exe)がダウンロードが開始されます。ダウンロードファイルは約1.1ギガバイトありますので、通信速度によっては少し時間がかかるかもしれません。
Android Studioをバージョンアップ
ダウンロードしたらAndroid Studioを閉じて、ダウンロードしたインストーラー(android-studio-2024.2.1.11-windows)を起動します。
デフォルトのまま「Next」をクリックすると以下のダイアログが表示されます。このメッセージの意味は、
This will remove ALL of program files under
C:\Program File\Android\Android Studio
and cannot be undone. Are you sure you wish to continue?
C:\Program File\Android\Android Studio
の下にあるすべてのプログラム ファイルが削除され、元に戻すことはできません。続行してもよろしいですか?
「元のバージョンを削除して新しいバージョンに書き換えますよ」という警告メッセージが表示されています。通常であれば、Android Studioのエミュレータやプロジェクトファイルはインストール先とは別のディレクトリに保存されていますので削除されませんので問題無いでしょう。「はい」をクリックしてください。
ただし、もしなんらかの理由で、設定やプロジェクトデータなどを保持したい場合は、アンインストール前にそれらをバックアップしておくことをお勧めします。重要なのは「keystore」ファイル(xxxxxxx.jks)です。私の場合、Android Studioのインストールフォルダとは全く別のフォルダで管理していたためか、「keystore」ファイルや保存先の設定等が削除されることもなく、問題なくそのまま使用できました。
メッセージ:Welcome to Android Studio Setup
Setup will guide you through the installation of Android Studio.
It is recommended that you close all other applications before starting Setup.This will make it prossble to update relevant system files without having to reboot your computer.
Click Next to continue.
訳:Android Studio セットアップへようこそ
セットアップでは、Android Studio のインストール手順を案内します。
セットアップを開始する前に、他のすべてのアプリケーションを閉じることをお勧めします。これにより、コンピューターを再起動せずに、関連するシステム ファイルを更新できるようになります。
[次へ] をクリックして続行します。
要約すると「他のアプリも閉じて実行すればコンピューターを再起動しなくても大丈夫だよ」というメッセージです。なるべく他のアプリを閉じて「Next」ボタンをクリックします。
メッセージ:Check the components you want to install and uncheck the compornents you don’t want to install.Click Next to continue.
訳:インストールするコンポーネントをチェックし、インストールしないコンポーネントのチェックを外します。[次へ] をクリックして続行します。
Android Virtual Deviceは、エミュレータを実行させるための仮想的なAndroid端末です。エミュレータを使っている人はチェックを入れて「Next」をクリックしてください。
メッセージ:The location specited must have at least 500MB of ferr space.
訳:指定する場所には少なくとも 500 MB の ferr スペースが必要です。
インストールするフォルダを指定しますが、少なくとも500MBが必要なようです。500MB以上あることを確認して「Next」をクリックしてください。
「Install」をクリックすればインストールが始まり、数分後に以下のような画面が表示されます。
「Next」をクリックするとバージョンアップしたAndroid Studioの起動確認画面が表示されます。
「Finish」をクリックして新しいAndroid Studioを起動します。
日本語化
再起動後、日本語化を行います。手順は以下のとおりです。
- Android Studioのバージョンを確認する
- Jetbrains公式サイトより、バージョンに合った言語パックをダウンロードする
- ダウンロードファイル(zip)を解凍する
- Android Studioの設定からダウンロードして解凍した言語パックを指定してインストールする
- Android Studioを再起動する
日本語化に関して、少し分かりにくい点や注意が必要な部分について、キャプチャ画像と簡単な説明を掲載しています。よろしければ参考にしてください。
1.Android Studioのバージョンを確認する
Android Studioのバージョンは、⚙️-[Settings]-[Appearance & Behavior]-[System Settings]-[Updates]の順にクリックして表示された以下の部分(AI-の次の数字3文字 例)242)に記載されています。
2.Jetbrains公式サイトより、バージョンに合った言語パックをダウンロードする
バージョンに合った言語パックをダウンロードしようとすると以下のような画面が出て戸惑うかもしれません。このメッセージは言語パックをインストール手順が表示されているだけです。
日本語の訳は以下のとおりです。
「日本語言語パック」のインストール方法
1.IDE をお持ちでない場合はインストールします:
2.IDE を開き、Ctrl+Alt+S を押して IDE 設定を開きます。
3.プラグインを選択し、 「設定マーク」をクリックしてからディスクからプラグインをインストールをクリックします。
4.プラグイン アーカイブ ファイルを選択し、OK をクリックします。
5.OK をクリックして変更を適用し、プロンプトが表示されたら IDE を再起動します。
今回、IDEはAndroid Studioのことです。色々なミドルウェア用の言語パックを選択できますが、IDE(Android Studio)は先ほどの手順で既にインストールしていますので、ここでは選択しなくて大丈夫です。(そのまま「Got it」やってちゃってください)
4.Android Studioの設定からダウンロードして解凍した言語パックを指定してインストールする
画面が洗練されていて、解凍した言語パックをどこで指定するのか、少し分かりにくいかもしれません。以下の画面を参考にしてください。
⚙️-[Plugins] をクリックして開かれたダイアログで、さらに⚙️-[Install Plugin from Disk]を選択すると、さらに以下のようなダイアログが表示されます。
[Install Plugin from Disk]で選択するファイルは、ダウンロードしたファイルではなく、ダウンロードして解凍したjarファイルです。言語パックによってバージョン番号は違うはずですが、私の場合は、ja.242.152.jarでした。
キャプチャ画像を後から撮ったので、既に日本語になった画像なので違和感あると思いますが、言語を日本語に選択するをお忘れなく。
もし日本語化でわからないことがあれば、以下のサイトが参考になると思います。
これは余談ですが、私がインストールしたIDE(Android Studio)は、インストール時(2024年11月12日)に、自ら日本語パックをインストールしようとして、以下のように失敗していました。そのため、上記のような手動でのインストールが必要でした。
もしかしたら、IDEのインストーラーが新しくなっていれば、日本語パックは自動でインストールされているかもしれません。その場合は、言語を日本語に選択するだけでOKだと思います。
その他インストール後の作業
私の場合、インストール後に以下のような作業が必要でした。よろしければ参考にしてください。
Microsoft Defender(ウイルス対策ソフトウェア)の除外リストに追加
Microsoft Defender(ウイルス対策ソフトウェア)のリアルタイム保護機能がIDEのパフォーマンスに悪影響を与える可能性があるため、ワークスペースやgradleの作業領域等を除外リストに追加することで、スムーズな動作を確保することができます。「自動」「手動」「このプロジェクトでは無視する」「今後表示しない」というリンクが表示されますので、「自動」をクリックするだけでこの作業は完了します。
Android Stuidoコンポーネントのアップデート
Ladybugは、2024年2月1日にリリースされましたが、その後たくさんのアップデートがあります。インストーラーのバージョンにもよりますが、私の場合、以下のアップデート要請の指示がありました。
- Android Emulator: Android エミュレータは、PC上で仮想的にAndroid端末を動作させるツールです。これをアップデートすることで、エミュレータの性能や互換性、バグ修正が改善されます。
- Android SDK Platform-Tools: これは、AndroidデバイスとPCを接続するために必要なコマンドラインツール(adb や fastboot など)を含んでいます。アップデートにより、デバイスとの接続が安定し、最新の機能や修正が提供されます。
- Android SDK Platform 33: これは、Android 13(APIレベル 33)の開発に必要なSDKプラットフォームです。これをアップデートすることで、Android 13に関する新機能や修正が利用できるようになります。
- Google APIs Intel x86 Atom System Image: GoogleのAPIが含まれるエミュレータ用のシステムイメージです。これをアップデートすると、特定のGoogleサービス(Google Play Servicesなど)をエミュレータ上で利用できるようになります。
- Google APIs Intel x86_64 Atom System Image: こちらは、Google APIsをサポートするエミュレータ用の64bitシステムイメージです。これをアップデートすることで、64bitエミュレータ上でGoogleの機能を利用できるようになります。
ボタンをクリックするだけで上記コンポーネントのアップデートが始まります。私が行ったときは1.1ギガバイトのダウンロードから始まりましたので、30分くらいの時間がかかりました。
GradleのJDKとプロジェクトのJDKを合わせる
Android Studioをアップグレードしたことで、Android Studio IDEのJAVA HOMEとプロジェクトのJDKに違いが出たようです。「Gradle JDK と JAVA_HOME の場所が異なるため、複数の Gradle デーモンが生成される場合があります」という少しずれたメッセージが表示され、ビルドができませんでした(英語でしたが)。対処方法は、プロジェクトのJDKをIDEのJAVA HOMEに合わせれば解決します。私の場合、IDEのJAVA HOMEはC:\Program Files\Android\Android Studio\jbrでしたので、プロジェクトのGradle JDKをその参照先に変更することで対応しました。
Gradleのバージョンアップ
gradleのバージョンが低いというエラーが表示されてビルドができませんでした。gradleのバージョンを上げます。
gradle-wrapper.properties
ファイルに記載されているgradleのバージョンを指定されたバージョン(私の場合は8.9だった)に変えます。
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
また、build.gradle
(プロジェクトレベル)の下記設定も最新のものに変えて、最後にsync(:同期)を行います。
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:7.5' // これを最新バージョンに更新
}
}
Manifest merger failedエラーの修正
Gradleのバージョンを8.9へアップデートした(Gradleを8.2から8.4でも同じらしい)ことで、AdMob(com.google.android.gms:play-services-measurement-api)とGoogleサービス(com.google.android.gms:play-services-ads-lite)の別々のライブラリで、同じ属性 (android.adservices.AD_SERVICES_CONFIG
) が定義されていることが原因で、以下のようなエラーが出てビルドきなくなるようです。
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : Attribute property#android.adservices.AD_SERVICES_CONFIG@resource value=(@xml/ga_ad_services_config) from [com.google.android.gms:play-services-measurement-api:21.5.1] AndroidManifest.xml:32:13-58
is also present at [com.google.android.gms:play-services-ads-lite:22.6.0] AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at AndroidManifest.xml to override.
詳しい原因はわかりませんが、googleのバグらしいとのことです。
対処方法は、『提案: オーバーライドするには、AndroidManifest.xml の 要素にtools:replace=”android:resource”‘ を追加します。』と書かれているように、素直に提案通りに対処します。手順は以下の通りです。
AndroidManifest.xml
にtools
名前空間を追加(①)<application>
タグにtools:replace="android:resource"
を追加(②)- プロジェクトをビルドして確認。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> <!-- ① toolsの名前空間を追加 -->
package="com.example.yourapp">
<!-- 必要なパーミッションやその他の設定がここに続きます -->
<application
・
・ >
<!-- 他のメタデータやアクティビティ設定などがここに続きます -->
<!--
競合するリソース(android:resource)の定義が異なる2つのライブラリ(play-services-ads-lite と play-services-measurement-api)で存在するため、
tools:replace="android:resource"(上書き) を追加して、リソースの競合を解消しています。
アプリでライブラリの定義を使用しない場合は上書きしても問題無いということが前提です
-->
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/gma_ad_services_config"
tools:replace="android:resource" />
</application>
</manifest>
詳しくは、以下のサイトが参考になります。
私の場合、appの他に共通ライブラリのAndroidManifest.xmlでも同じようなエラーが出ていましたので、同じように修正することでエラーを回避できました。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> <!-- ① toolsの名前空間を追加 -->
・
・
・
<application>
<!-- 他の設定 -->
<!--
競合するリソース(android:resource)の定義が異なる2つのライブラリ(play-services-ads-lite と play-services-measurement-api)で存在するため、
tools:replace="android:resource"(上書き) を追加して、リソースの競合を解消しています。
アプリでライブラリの定義を使用しない場合は上書きしても問題無いということが前提です
-->
<!-- 重複するリソースの競合解消 -->
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/gma_ad_services_config"
tools:replace="android:resource" />
</application>
</manifest>
リソースファイル(layout内xml)の「Lint」静的解析ツール変更を取り込む
Android Studioには「Lint」という静的解析ツールがあり、アプリケーションのコードやリソース(例えば、レイアウトXML)をチェックして問題点を指摘します。Lintは、警告やエラーを表示するため、開発者が見落としやすい問題を指摘してくれる便利なツールです。
バージョンアップ後、Lintのルールが変更されたり、チェックが強化されたりすることがあります。以前は警告だったエラーが強化されて、新たにエラーとして扱われるようになった所が出て来ることがあります。
たとえば、以下のようなandroid:textSize
属性に指定されている値が「dp
」の場合、スケーラブルな単位(sp
)を使うべきというエラーになります。この問題を修正するには、android:textSize
の値を sp
にするだけです。
<Button
android:id="@+id/xxxxxx"
・
android:textSize="11dp" ← 11spに修正する
・
app:layout_constraintTop_toTopOf="@+id/xxxxx" />
このようなエラーが発生すると、リソースファイルがビルドできません。すべて修正する日知用があります。
補足
最近私が嵌まっている沸かせる温調ボトル。電源コードは本体にしまえるし、日本製なので変換用のアダプタも必要ありません。便利ですよ~。
これ、何に使うかというと、私は熱燗飲むために使っています。とっくりを入れた時の高さが丁度いいんですね。
沸かせる温度は4種類ありますが、基本的には95℃で沸かせば、とっくりの中の日本酒は60℃くらいになります。程よい少し熱めの熱燗が楽しめます。注いでもボトルに戻せば温かさはキープされますし、もう一杯飲みたいときや、冷めたときは、温め直せばOKです。週末、基本、部屋でテレビを見ながら机の上に置いて楽しんでいますが、300Whなので、そのくらいの性能を持ったモバイルバッテリーで利用できます。車中泊で使うのもありですね。これ、超おすすめですよ~。
コメント