
Android開発者の皆様へ:16 KB メモリページサイズの更新
所要時間:1 分
はじめに
グーグルは Android開発者にとって非常に重要なAndroid開発者にとって非常に重要な発表があった。Android 15以上のデバイスをターゲットとするすべての新規アプリと既存アプリのアップデートは、2025年11月1日以降、64ビットデバイスで16KBのメモリ・ページ・サイズをサポートする必要がある。 2025年11月1日以降、64ビット端末では16KBのメモリ・ページ・サイズをサポートする必要がある。.これまでは4KBのメモリ・ページ・サイズしかサポートする必要がなかった。
この投稿では、変更の内容や理由を説明するだけでなく、以下のSDKを使用するAndroidアプリケーションのアップデート方法についても説明します。 Vonage Client SDKを使用するAndroidアプリケーションをアップデートする方法を説明します。.また、Android 14デバイスでの音声録音に関する修正についても説明します。
注: Vonage Video Client SDKは、16 KBのメモリページサイズをサポートしています。 v2.30.0現在.
何を、なぜ
Androidはシステムレベルでのメモリ管理方法を変更しつつあり、あなたのアプリに影響を与える可能性があります。これはあなたのアプリに影響を与える可能性がある:
ページサイズとは?ページとは、デバイスのオペレーティング・システムがアプリに割り当てるメモリの固定ブロックのことです。標準サイズの輸送用コンテナのようなもので、アプリのメモリはこのコンテナに詰め込まれる必要があります。現在、Androidは4KBページ(小さなコンテナのようなもの)を使用していますが、新しいデバイスでは16KBページ(より大きなコンテナ)を使用します。
アプリに20MBのRAMが必要な場合、システムは現在5,120個の小さなコンテナ(各4KB)を提供している。16KBのページがあれば、代わりに1,280個の大きなコンテナが手に入る。
なぜアンドロイドはこのような変更を行うのでしょうか?ページサイズが大きくなると、いくつかの利点があります:
消費電力を抑え、アプリの起動を高速化
デバイスの起動時間の短縮
システム全体のパフォーマンスの向上
これは私のアプリに影響しますか?この変更は、主に ネイティブコード- という意味です:
Android NDKを使用したアプリ
ネイティブ・ライブラリ(C/C++コード)を使用したアプリ
ネイティブコンポーネントを含むサードパーティSDKを使用するアプリ(たとえば クライアントSDK)
もしあなたのアプリがネイティブ依存のない純粋なJava/Kotlinであれば、おそらく問題ないので、ここで読むのをやめても構わない。
どのような問題が発生する可能性がありますか?ネイティブコードを使用したアプリで発生する可能性があります:
クラッシュの原因となるメモリ・アライメントの問題
古いネイティブ・ライブラリとの互換性の問題
メモリ割り当て時の予期せぬ動作
どうすればいいのか?Google Playは、アプリを16KBのページサイズに対応させることを要求します。準備すること
以下のガイドに従って、Vonage Client SDKの実装を更新してください。
ネイティブ・ライブラリを16KBページをサポートするバージョンにアップデートする。
16KBのページを持つデバイス(またはこのように設定されたエミュレータ)でアプリをテストする。
NDKコードにハードコードされたページサイズの仮定がないか確認する。
この要件により、ページサイズ16KBのデバイスが市場に初めて登場した際にも、アプリがスムーズに動作することが保証される。
アプリケーションの更新
前提条件
GradleをセットアップしたAndroidプロジェクト。
アクセス Vonage Client SDKへのアクセス.
コンパイルおよびターゲットSDKとして最小限のAndroid API 36。
1.Vonage Android SDKバージョンを更新する
まず、新しいSDKとターゲットAndroid API 36を使用するようにGradleの設定を更新します。
あなたの app/build.gradleファイルに
android {
...
compileSdk 36
defaultConfig {
...
targetSdk 36
...
}
}
dependencies {
...
// Vonage Client SDK
implementation("com.vonage:client-sdk-voice:2.1.0")
} 2.Android 14+ Audio Hotfixを適用する
APIレベル34(Android 14)から、Androidは、アプリがフォアグラウンドにある場合でも、オーディオを録音するためにフォアグラウンドサービス(FGS)が必要になりました。
これを遵守するには、発信または着信コールを処理するたびに、FGSを開始します。
アウトバウンドコール
アウトバウンドコールをかける場合:
client.serverCall(context) { err, callId ->
err?.let {
println("Error starting outbound call: $it")
} ?: callId?.let {
println("Start outbound Call success: $it")
requireActivity().getSharedPreferences("legid", Context.MODE_PRIVATE).edit().apply {
putString("legid", it)
apply()
}
activeCallId = it
telecomHelper.startOutgoingCall(it, "SERVER-CALL")
// Required on API 34+: Start FGS for audio recording
startForegroundService(requireContext())
}
} インバウンドコール
着信に対応するとき:
client.setCallInviteListener { callId, from, type ->
activeCallId = callId
println("Call from: $from, via channel $callId, channelType: $type")
telecomHelper.startIncomingCall(callId, from, type)
// Required on API 34+: Start FGS for audio recording
startForegroundService(requireContext())
} 3.通知機能付きフォアグラウンドサービスの追加
Androidでは、オーディオを録音するFGSは、録音がアクティブであることをユーザーに知らせる永続的な通知を表示する必要があります。
を実装する必要がある。 AudioRecorderService.リファレンス実装はこちら: AudioRecorderService.kt (GitHub)
概要
Vonage Client SDKでAndroid 16KBメモリ・ページ・サイズをサポートする:
API36をターゲットとし、最新のSDKバージョンを含むようにGradleを更新します。
アンドロイド14歳以上対象:
コール処理時にフォアグラウンド・サービスを開始する。
サービスが音声録音に関する通知を投稿することを確認する。
これにより、Androidの新しいポリシーへの準拠が保証され、通話中の音声問題を防ぐことができる。
ありがとう ネイサンそして サルバトーレClient SDKチームのNathanとSalvatoreに感謝します。16KBのメモリ・ページ・サイズをサポートするアプリケーションをすでに更新したり、新しく作成したりしましたか?その経験はいかがでしたか?私たちの 開発者コミュニティ.