HERE SDK の最適化
この 最適化ガイド では、 HERE SDK のサイズを縮小し、ロードまたは処理する必要のあるデータを削減してランタイムの動作を最適化するためのオプションをいくつか示します。
一覧表示されている各フィーチャーは、 1 つ以上の OCM レイヤーグループに関連しています。 OCM レイヤーグループの名前は、 API リファレンス のフィーチャーごとに確認できます。 ただし、ほとんどのユースケースの場合、関連する OCM レイヤー名を知っていても関連ありません。
さらに、 HERE SDK エディションで現在使用するのに適していない 2 つのレイヤーADAS
とEHORIZON
(電子ホライズン)があります。これらのレイヤーは現在は無視してかまいません。 デフォルトでは、これらはすでに無効になっています。
フィーチャーが無効になっている場合、そのフィーチャーに必要なデータがキャッシュ内のスペースまたはダウンロードRegion
の一部 としては使用されません。 また、フィーチャーをオフラインで使用することはできません。 また、OFFLINE_SEARCH
が無効になっているのにOfflineSearchEngine
を使おうとした場合など、エラーが発生することもあります。詳細については、以下を参照してください。
注
SearchEngine
や RoutingEngine
などのエンジン では、キャッシュされた、またはダウンロードされたマップ データは使用されません。 関連するフィーチャーが無効になっていない場合、OfflineSearchEngine
および OfflineRoutingEngine
のみがこのようなデータを使用します。 たとえば、アプリがオンラインで完全に動作することが確実な場合は、オフライン検索フィーチャーを無効にしても安全です。 ただし、一時的に接続が失われたときにアプリ が POI を検索できるようにする 場合は、そのような失われた POI を検出したときににOfflineSearchEngine
に切り替えることができます。そのため、関連するフィーチャーを無効にしないでください。
上記のように、一部の無効化された機能については、デバイスがオンライン接続され、機能が必要な場合に、デバイスが対応するデータをダウンロードすることがあります。 たとえば、「 landmarks_3d 」機能が無効になっているが、対応する MapScene
レイヤーが有効になっている場合 、デバイスは、ビューポイント MapView
で 3D ランドマークが表示されたときに、必要なテクスチャをダウンロードして 3D ランドマークをレンダリングします。
上記のすべてのフィーチャについて、 OFFLINE_SEARCH
およびOFFLINE_ROUTING
を除き、 HERE SDK はまず、必要なデータがキャッシュで利用可能かどうかを確認します。 オフラインで使用するためにダウンロードされたRegion
があるかどうかが確認されます。 見つからない場合、 HERE SDK は必要なデータをワイヤレスでダウンロードしようとします。 OFFLINE_SEARCH
とOFFLINE_ROUTING
の動作は同じですが、ワイヤレスではデータは要求されません。
機能設定を更新
フィーチャーの設定は、次のアプリケーションアップデートのインストール後に mapUpdater.performFeatureUpdate()
を呼び出して更新でき ます。AndroidManifest
ファイル内のフィーチャーの設定が更新されたら、このメソッドを呼び出します。
その結果、キャッシュされたマップ データ が削除され、その後更新されます。 また、ダウンロードしたリージョンが更新され、変更内容が反映されます。
アップデートをいつ実行するかは開発者の責任で決定してください。 HERE SDK は、このような更新がいつ行われるかを決定または通知しません。 performFeatureUpdate()
の呼び出しは、アプリケーションが更新された後で 1 回のみ必要です。 開発者がフィーチャーの設定を変更していない場合は、この関数を呼び出す必要はありません。
未使用の音声を削除
未使用の音声ガイダンスファイルを削除することで、 HERE SDK のサイズを削減できます。
これらのファイルは、テキスト / スピーチボイスメッセージでターン・バイ・ターンナビ (矢印ナビ) を使用する場合にのみ必要です。
未使用のファイルを削除するには、次の操作を行います。
- HERE SDK フレームワークを展開し 、フォルダ
assets/voice_assets
を検索 - フレームワークのサイズを縮小する場合は、不要な音声パッケージを削除
- Android Studio を使用して AAR を再アーカイブ
ここで サポートされているすべての音声言語のリストと、 HERE SDK フレームワーク内に保存されている関連する音声スキンの名前を見つけることができます。
未使用のフォントを削除
未使用のフォントを削除することで、 HERE SDK のサイズを削減できます。 これについては、 ここで説明します。
ABI 分割
サイズ管理 : ABI 分割を使用すると、 HERE SDK AAR バイナリファイルのサイズを削減できます。 その結果、アプリケーションが使用するデバイスのストレージ容量が少なくなります。
デフォルトでは、 HERE SDK for Android には次のABIが含まれています。armeabi-v7a
、 ( arm64-v8a
主にデバイスに使用 ) 、および x86
( x86_64
主にエミュレータに使用 ) 。 ABI 分割を有効にして、アプリ を構築 できます ( 例 : armeabi-v7a
アーキテクチャまたはarm64-v8a
アーキテクチャのみ ) 。
これを行うには、アプリ build.gradle
のファイルを変更します。
android {
(...)
splits {
abi {
enable true
reset()
include 'x86_64', 'arm64-v8a' // Choose what you need.
universalApk false
}
}
(...)
}
./gradlew assembleRelease
コマンド ライン から実行すると、次の 2 つの APK が生成されます。 app-x86_64-release.apk
および app-arm64-v8a-release.apk
。 各 APK には必要な ABI のみが含まれているため、サイズは大幅に小さくなります。 splits
ブロックをuniversalApk true
に設定変更すると 、すべてのABIを含むユニバーサル APK も生成されますが、これは明らかにはるかに大きくなります。
splits
Gradle ブロックの詳細について は、「 ABI 用に複数の APK を設定する」を参照してください。
注
デフォルトでは、HERE SDK for releaseでビルドされたAPKは、アプリの機能に応じて103 MB以上になります。 そのため、Playストアでアプリをリリースするには、ABIスプリットまたは Android App Bundles(AAB)のいずれかを使用する必要があります。 現時点では、PlayストアはAPKを100 MBに制限しており、ABBの制限は150 MBに制限されています。 選択したアーキテクチャのABIスプリットを介して構築された複数のAPKを維持したくない場合は、代わりにABBを使用することを検討してください。
その他のオプション
HERE SDK の最適化-その他のオプションは次のとおりです。
さらに、すべてのエンジンには、フィーチャーの設定方法を許可するいくつかのオプションが含まれています。 たとえば、SearchEngine
を使用する場合、SearchOptions
を指定して、返される検索結果を制限できます。