MagicPodのAndroid 17クラウドデバイスは、これまでのAndroidクラウドデバイスで使用されていた4 KBのメモリページサイズではなく、16 KBのメモリページサイズを使用します。ほとんどのアプリは影響を受けませんが、一部のアプリは16 KBページサイズを使用するデバイス上で正しく動作しない場合があります。
ここでは、この現象が発生する理由と対処方法についてご説明します。
この現象が発生する原因
MagicPodでは、現在Android 17クラウドデバイスが16 KBページサイズを使用しています。16 KBのメモリページサイズはAndroid 15でオプションとして導入され、Android 17以降では必須となっています。
ネイティブコード(C/C++)を含むアプリは、16 KBページサイズを使用するデバイス上で正しく動作するために、ネイティブコードが16 KB境界にアラインメントされている必要があります。従来の4 KBページサイズデバイス向けにのみビルドされたアプリは、正しく動作せず、起動時にクラッシュする場合があります。
ネイティブコードを含まず、JavaまたはKotlinのみで書かれているアプリでも、依存ライブラリを通じて間接的に16KBアライメント未対応のネイティブコードが含まれている場合があります。その場合、アプリは同じく16KBのデバイスでは起動できなくなります。
対処方法
アプリを対応させるには、ネイティブライブラリを16 KBにアラインメントして再ビルドしてください。16 KBにアラインメントされたアプリは4 KBページサイズのデバイスでも正しく動作するため、別々のビルドを用意する必要はありません。
また、Java/Kotlinだけで書かれているアプリでも、回帰がないと確認するために16 KBページサイズのデバイスでテストすることをおすすめします。
アプリのアライメント確認および再ビルドの手順については、Google公式のドキュメントをご参照ください:
16 KB ページサイズのサポート | Compatibility - Android Developers