プロダクト ニュース

Android 17 の 4 番目のベータ版

4 分で読了
Daniel Galpin
デベロッパー アドボケイト

Android 17 がベータ版 4 に到達しました。これは、このリリース サイクルの最後のベータ版であり、アプリの互換性とプラットフォームの安定性にとって重要なマイルストーンです。アプリのユーザー エクスペリエンスの微調整、エッジツーエッジのレンダリングの円滑化、最新の API の活用など、ベータ版 4 はテストに必要なほぼ最終的な環境を提供します。

アプリ、ライブラリ、ツール、ゲームエンジンを準備しましょう

Android SDK、ライブラリ、ツール、ゲームエンジンを開発している場合は、互換性の問題によって下流のアプリやゲームのデベロッパーがブロックされないように、必要なアップデートを今すぐ準備することが重要です。これにより、最新の SDK 機能を利用できるようになります。Android 17 を完全にサポートするためにアップデートが必要な場合は、下流のデベロッパーにお知らせください。

Android17_Timeline_01_V02.png

テストでは、Google Play などを使用して、Android 17 ベータ版 4 を実行しているデバイスまたはエミュレータに、本番環境アプリまたはライブラリやエンジンを使用するテストアプリをインストールします。アプリのすべてのフローを実行して、機能や UI の問題を探します。Android の各リリースには、プライバシー、セキュリティ、全体的なユーザー エクスペリエンスを向上させるプラットフォームの変更が含まれています。Android 17 で実行されるアプリと Android 17 をターゲットとするアプリに影響する動作変更を確認して、テストに集中してください。以下に例を示します。Android 17 で実行されるアプリAndroid 17 をターゲットとするアプリに影響する動作変更を確認して、テストに集中してください。以下に例を示します。

アプリのメモリ制限

Android では、デバイスの合計 RAM に基づいてアプリのメモリ制限を導入し、アプリと Android ユーザーにとってより安定した決定論的な環境を構築しています。Android 17 では、システム全体のベースラインを確立するために制限が控えめに設定されています。UI のスタッタリング、バッテリーの消耗、アプリの強制終了につながるシステム全体の不安定さを引き起こす前に、極端なメモリリークやその他の外れ値をターゲットにしています。ほとんどのアプリ セッションへの影響は最小限に抑えられると予想されますが、メモリのベースラインの確立など、次のメモリに関するベスト プラクティスをおすすめします。

現在の実装では、アプリが影響を受けた場合、ApplicationExitInfogetDescription に文字列「MemoryLimiter」が含まれます。また、トリガーベースのプロファイリングTRIGGER_TYPE_ANOMALYとともに使用すると、メモリ制限に達したときに収集されるヒープダンプを取得できます。

unnamed (2).png
Android Studio Profiler の LeakCanary タスク

メモリリークを見つけやすくするため、Android Studio Panda では、Android Studio Profiler に LeakCanary 統合が専用タスクとして直接追加され、IDE 内でコンテキスト化され、ソースコードと完全に統合されています。

メモリ使用量を抑えることで、パフォーマンスの向上、バッテリー駆動時間の延長、あらゆるフォーム ファクタでの優れたエクスペリエンスに直接つながります。Android エコシステムのより高速で信頼性の高い未来を一緒に築きましょう。

アプリの異常のプロファイリング トリガー

Android には、リソースを大量に消費する動作や互換性の低下の可能性をモニタリングするオンデバイス異常検出サービスが導入されています。ProfilingManager と統合されたこのサービスにより、アプリは特定のシステム検出イベントによってトリガーされるプロファイリング アーティファクトを受け取ることができます。

TRIGGER_TYPE_ANOMALY トリガーを使用して、バインダー呼び出しの過剰やメモリ使用量の過剰など、システム パフォーマンスの問題を検出します。アプリが OS で定義されたメモリ制限を超えると、異常トリガーにより、デベロッパーはアプリ固有のヒープダンプを受け取って、メモリの問題を特定して修正できます。また、バインダー スパムが過剰な場合、異常トリガーはバインダー トランザクションのスタック サンプリング プロファイルを提供します。

この API コールバックは、システムによって適用される強制適用より前に発生します。たとえば、メモリ制限を超えてアプリがシステムによって強制終了される前に、デベロッパーがデバッグデータを収集するのに役立ちます。トリガーの使用方法については、トリガーベースのプロファイリングに関するドキュメントをご覧ください。

    val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java)
    val triggers = ArrayList<ProfilingTrigger>()  
    triggers.add(ProfilingTrigger.Builder(
                 ProfilingTrigger.TRIGGER_TYPE_ANOMALY))
    val mainExecutor: Executor = Executors.newSingleThreadExecutor()
    val resultCallback = Consumer<ProfilingResult> { profilingResult ->
        if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) {
            // upload profile result to server for further analysis          
            setupProfileUploadWorker(profilingResult.resultFilePath)
        } 
    profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback)
    profilingManager.addProfilingTriggers(triggers)
}

Android Keystore のポスト量子暗号(PQC)

Android Keystore では、 NIST 標準化された ML-DSA(Module-Lattice-Based Digital Signature Algorithm)のサポートが追加されました。サポートされているデバイスでは、ML-DSA 鍵を生成し、デバイスのセキュア ハードウェア内で耐量子署名を生成できます。Android Keystore は、標準の Java Cryptographic Architecture API(KeyPairGeneratorKeyFactory、およびSignature)を介して、ML-DSA-65 アルゴリズムと ML-DSA-87 アルゴリズムのバリアントを公開します。詳細については、デベロッパー向けドキュメントをご覧ください。

KeyPairGenerator generator = KeyPairGenerator.getInstance(
        ML-DSA-65, "AndroidKeyStore");
generator.initialize(
        new KeyGenParameterSpec.Builder(
                my-key-alias,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
        .build());
KeyPair keyPair = generator.generateKeyPair();

Android 17 を使ってみる

サポートされている Pixel デバイスを登録すると、このアップデートと今後の Android ベータ版アップデートを無線(OTA)で入手できます。Google Pixel デバイスをお持ちでない場合は、Android Studio で Android Emulator を使用して64 ビット システム イメージを使用できます

現在 Android ベータ プログラムに参加している場合は、ベータ版 4 への無線(OTA)アップデートが提供されます。

フィードバック ページで、引き続き問題を報告し、機能リクエストを送信してください早期にフィードバックをお送りいただくと、最終リリースに向けた作業により多くのフィードバックを反映させることができます。

Android 17 で最適な開発エクスペリエンスを実現するには、Android Studio(Panda)の最新プレビュー版を使用することをおすすめします。設定が完了したら、次のことを行ってください。

  • 新しい SDK でコンパイルし、CI 環境でテストし、フィードバック ページのトラッカーで問題を報告します。
  • 現在のアプリの互換性をテストし、アプリが Android 17 の変更の影響を受けるかどうかを確認し、Android 17 を実行しているデバイスまたはエミュレータにアプリをインストールして、徹底的にテストします。

Android 17 リリース サイクルの間、プレビュー/ベータ版システム イメージと SDK は定期的に更新されます。ベータ版ビルドをインストールすると、それ以降のすべてのプレビュー版とベータ版のアップデートが無線(OTA)で自動的に提供されます。

詳細については、Android 17 デベロッパー サイトをご覧ください。

会話に参加する

皆様からのフィードバックは、引き続き最も貴重な資産です。カナリア チャネルのアーリー アダプターでも、ベータ版 4 でテストしているアプリ デベロッパーでも、コミュニティに参加してフィードバックをお送りください。皆様のご意見をお待ちしております。

執筆者:

続きを読む