実機にapkをインストールできない「お使いのスマートフォンに対応していないため、アプリをインストールできませんでした。」

バグ/エラー

UnityでBuildしたapkを実機(Pixel8a)にインストールしようとしたらできませんでした。

「お使いのスマートフォンに対応していないため、アプリをインストールできませんでした。」
って表示されました。

調査

とりあえずネット上に転がっている同じような現象の記事をさらって試してみましたがうまくいかないので実機をUSBデバッグにしてつないでUnityから直接インストールしてみると

Hardware of device 'Google Pixel 8a (XXXXXXXXXXXX)' is not supported: You are trying to install ARMv7 APK to ARM64 device. Please select ARM64 as device filter under Player Settings or connect ARMv7 device.

デバイス「Google Pixel 8a」はサポートしていません:ARMv7 APKをARM64デバイスにインストールしようとしています。Player SettingsでデバイスフィルターとしてARM64を選択するか、ARMv7デバイスを接続してください。

だそうです。
はじめから繋いでやってみればよかった・・・。

設定変更

調べたところ以下の場所のようです。

「Edit」->「Project Settings」->「Player」->「Android」->「Other Settings」->「Configuration」

ここのARM64にチェックボックスをいれられればいいのですが、グレーアウトされていてチェックできません。

変更するには「Scripting Backend」をMonoからIL2CPPに変更します。

ARM64にチェックします。

これで実機で実機で起動することができました。

これは解決するまで大変だった・・・ので備忘録で残しておきます。

おまけ情報(調査時に見つけてやってみたけど解決しなかった、でも情報として残しておく)

調べてみたらこんな記事を見かけました。

Block installation of apps

Malware often targets older API levels to bypass security and privacy protections that have been introduced in newer Android versions. To protect against this, starting with Android 14, apps with a targetSdkVersion lower than 23 cannot be installed. This specific version was chosen because some malware apps use a targetSdkVersion of 22 to avoid being subjected to the runtime permission model introduced in 2015 by Android 6.0 (API level 23).

https://android-developers.googleblog.com/2023/02/first-developer-preview-android14.html

アプリのインストールをブロック

マルウェアは、新しいAndroidバージョンで導入されたセキュリティやプライバシー保護をバイパスするために、古いAPIレベルをターゲットにすることがよくあります。 これを防ぐため、Android 14から、targetSdkVersionが23未満のアプリはインストールできなくなりました。 マルウェアのアプリの中には、2015年にAndroid 6.0(APIレベル23)で導入されたランタイム許可モデルの適用を避けるために、targetSdkVersion 22を使用するものがあるため、この特定のバージョンが選択されました。

セキュリティ

インストール可能な最小対象 API レベル

Android 14 以降では、targetSdkVersion が 23 未満のアプリはインストールできません。これらの最小対象 API レベルの要件をアプリが満たすことを必須とすることで、ユーザーのセキュリティとプライバシーを強化しています。

https://developer.android.com/about/versions/14/behavior-changes-all?hl=ja#minimum-target-api-level

ちなみにAndroid10の実機にインストールしてみました。
こちらは問題なくエラーはおきず、ゲームをプレイすることができました。

設定変更

この記事書いているのは、2024年です。2015年っていうと9年前の端末ですね。今もまだAndroid5.1(APIレベル22)の端末使っている人もいるでしょうが、少数でしょう。

当時の端末を使っているとしても更新されAndroidのバージョンは上がっている可能性も高いです。

というわけでtargetSdkVersionをいじります。

「Edit」->「Project Settings」->「Player」->「Android」->「Other Settings」

Minimum API LevelをAPI level 23以上にします。

これでBuildしてみましたが解決しませんでした。

他にもAndroidManifest.xmlにandroid:exported=”true”入れてみるとかしてました。解決しませんでした。

コメント

タイトルとURLをコピーしました