HERE SDK の最適化
この 最適化ガイド では、 HERE SDK のサイズを縮小し、ロードまたは処理する必要のあるデータを削減してランタイムの動作を最適化するためのオプションをいくつか示します。
機能設定を使用
LayerConfiguration
を設定すると 、MapView
をパンするとき、またはオフラインで使用するために新しい Region
をダウンロードするときに、キャッシュにロードするマップ データの量を指定できます。 たとえば、ターン・バイ・ターンナビ (矢印ナビ)などのフィーチャーがアプリケーションで使用されていない場合 、フィーチャーの設定のnavigation
を削除できます。
その結果、MapView
をパンすると、キャッシュにダウンロードされるデータ量が少なくなります。 さらに、新しいRegion
をダウンロードすると、サイズが小さくなります。
LayerConfiguration
をSDKOptions.layerConfiguration
を経由してアイテムのFeature
リストとして設定すると 、一覧表示され ているフィーチャーのみが有効になり、それ以外のフィーチャーはすべて 無効になります。 1 つのフィーチャーは1つのみを無効にする場合は、他のすべてのフィーチャーを有効にするか、または無効にする必要があります。
たとえば、フィーチャー・一覧に navigation
とTRUCK
が含まれている場合、 ナビゲーション フィーチャーとトラックフィーチャーのみが有効になり、その他のフィーチャーはすべて無効になります。
Region
が 初めてダウンロードまたはキャッシュされたときに、グローバルに設定されたのみLayerConfiguration
が使用されます。 すでにダウンロードされているリージョンのLayerConfiguration
を更新する場合は、リージョンを削除して再度ダウンロードするか、または mapUpdater.performFeatureUpdate()
を呼び出します ( 以下のも参照 ) 。
現在、以下のフィーチャーを指定できます。 表には、デフォルトで有効になっているフィーチャーも表示されます。
フィーチャー | 有効 | 説明 |
detailRendering | はい | 建物などの追加のレンダリングの詳細。 MapView にのみ使用されます。 設定されていない場合、オフラインのリージョンをダウンロードするとき、またはそのようなデータが含まれているエリアをプリフェッチするときに、データが除外されます。 ただし、オンラインでの使用中には、このようなデータがキャッシュにダウンロードされて表示されることがあります。 |
navigation | はい | ナビゲーション中のマップマッチングに使用されるマップ データ。 設定されていない場合、オンラインまたはオフラインで使用しているときにナビゲーションが正しく動作しないことがあります。 |
offlineSearch | はい | 検索に使用されるマップ データ。 設定されていない場合、 OfflineSearchEngine を使用するとが正しく動作しないことがあります。 |
offlineRouting | はい | ルートの計算に使用されるマップ データ。 設定されていない場合、 OfflineRoutingEngine を使用するとが正しく動作しないことがあります。 |
truck | はい | トラックルートの計算に使用されるマップ データ。 設定しないと、 OfflineRoutingEngine を使用してトラックルートを計算するときにが正しく動作しないことがあります。 トラックナビゲーション中の地図の一致にも使用されます。 設定しないと、オフラインで使用しているときにトラックナビゲーションが正しく動作しないことがあります。 オンライントラックナビゲーションは、デバイスがオンライン接続されている場合でも機能します。 |
landmarks3d | いいえ | テクスチャ付き 3D ランドマークのレンダリングに使用されるマップ データ。 設定されていない場合、オフラインのリージョンをダウンロードするとき、またはそのようなデータが含まれているエリアをプリフェッチするときに、データが除外されます。 LANDMARKS レイヤーがMapScene に対して表示されるように設定されている場合、3D ランドマークはオンライン使用中にも表示されます。 |
junctionView3x4 , junctionView16x9 | いいえ | 複雑な交差点に適した 3D ビジュアル。 このアセットデータは、ガイダンス中に SVG 画像を表示するために使用できます。 有効にすると、ダウンロードされたリージョンに、対応する JunctionViewWarning イベントで使用される交差点表示イメージが含まれます。 これは、旅程を開始する前にアセットをダウンロードする場合に役立ちます。 有効になっていない場合、必要なデータが必要なときにダウンロードされます。 各イメージは最大 15 MB を使用できます。 HERE SDK の今後のリリースでは、リアルさのレベルを下げることでサイズが最適化されることに注意してください。 デフォルトでは、レイヤーは有効になっていません。 |
junctionSign3X4 、 junctionSign4X3 、 junctionSign3X5 、、 junctionSign5X3 junctionSign16X9 | いいえ | 署名者のビジュアル。 このアセットデータは、ガイダンス中に SVG 画像を表示するために使用できます。 有効にすると、ダウンロードされたリージョンに、対応する SignpostWarning イベントで使用される交差点表示イメージが含まれます。 有効になっていない場合、必要なデータが必要なときにダウンロードされます。 各イメージは最大 300 KB を使用できます。 有効になっていない場合、必要なデータが必要なときにダウンロードされます。 デフォルトでは、レイヤーは有効になっていません。 |
rendering | はい | Carto POI などの基本的なレンダリングフィーチャーのセット。 ベースレイヤーとして、このフィーチャーを無効にすることはできません。 |
traffic | はい | RDS-TMC 形式を使用してトラフィックブロードキャストフィーチャーを提供するマップ データ。 インターネット接続がない場合に使用して、ルーティングモジュールが無線チャネル経由で送信されるトラフィックデータを利用して、OfflineRoutingEngine を使用してルートを作成できるようにします。 |
ev | いいえ | EV 充電ステーションのオフライン マップデータ。 |
truckServiceAttributes | いいえ | トラックに関連する属性をOfflineSearchEngine から戻すことができます。 |
fuelStationAttributes | いいえ | OfflineSearchEngine によって燃料属性が返されるようにします。 |
offlineBusRouting | いいえ | バスルートの計算に使用されるマップ データ。 設定されていない 場合 、 OfflineRoutingEngine はBusOptions でルートを計算できないことがあります。 |
terrain | いいえ | 地形データを表すために使用されるマップ データ 。 |
一覧表示されている各フィーチャーは、 1 つ以上の OCM レイヤーグループに関連しています。 OCM レイヤーグループの名前は、 API リファレンス のフィーチャーごとに確認できます。 ただし、ほとんどのユースケースの場合、関連する OCM レイヤー名を知っていても関連ありません。
さらに、 HERE SDK エディションで現在使用するのに適していない 2 つのレイヤーADAS
とEHORIZON
(電子ホライズン)があります。これらのレイヤーは現在は無視してかまいません。 デフォルトでは、これらはすでに無効になっています。
フィーチャーが無効になっている場合、そのフィーチャーに必要なデータがキャッシュ内のスペースまたはダウンロードRegion
の一部 としては使用されません。 また、フィーチャーをオフラインで使用することはできません。 また、offlineSearch
が無効になっているのにOfflineSearchEngine
を使おうとした場合など、エラーが発生することもあります。詳細については、以下を参照してください。
注
SearchEngine
や RoutingEngine
などのエンジン では、キャッシュされた、またはダウンロードされたマップ データは使用されません。 関連するフィーチャーが無効になっていない場合、OfflineSearchEngine
および OfflineRoutingEngine
のみがこのようなデータを使用します。 たとえば、アプリがオンラインで完全に動作することが確実な場合は、オフライン検索フィーチャーを無効にしても安全です。 ただし、一時的に接続が失われたときにアプリ が POI を検索できるようにする 場合は、そのような失われた POI を検出したときににOfflineSearchEngine
に切り替えることができます。そのため、関連するフィーチャーを無効にしないでください。
上記のように、一部の無効化されたフィーチャーについては、デバイスがオンライン接続され、フィーチャーが必要な場合に、デバイスが対応するデータをダウンロードすることがあります。 たとえば、このlandmarks3d
フィーチャーが無効になっていても、対応するレイヤーMapScene
が有効になっている場合、デバイスは必要なテクスチャをダウンロードして 、 3D ランドマークがMapView
のビューポイントに表示されたときにレンダリングします。
上記のすべてのフィーチャについて、 offlineSearch
およびofflineRouting
を除き、 HERE SDK はまず、必要なデータがキャッシュで利用可能かどうかを確認します。 オフラインで使用するためにダウンロードされたRegion
があるかどうかが確認されます。 見つからない場合、 HERE SDK は必要なデータをワイヤレスでダウンロードしようとします。 offlineSearch
とofflineRouting
の動作は同じですが、ワイヤレスではデータは要求されません。
機能設定を更新
機能の設定は、次のアプリケーションアップデートのインストール後にを呼び出して更新でき mapUpdater.performFeatureUpdate()
ます。 AndroidManifest
/file で機能設定が更新されたら、このメソッドを呼び出しPList
ます。
その結果、キャッシュされたマップ データ が削除され、その後更新されます。 また、ダウンロードしたリージョンが更新され、変更内容が反映されます。
アップデートをいつ実行するかは開発者の責任で決定してください。 HERE SDK は、このような更新がいつ行われるかを決定または通知しません。 performFeatureUpdate()
の呼び出しは、アプリケーションが更新された後で 1 回のみ必要です。 開発者がフィーチャーの設定を変更していない場合は、この関数を呼び出す必要はありません。
未使用の音声を削除
未使用の音声ガイダンスファイルを削除することで、 HERE SDK のサイズを削減できます。
これらのファイルは、テキスト / スピーチボイスメッセージでターン・バイ・ターンナビ (矢印ナビ) を使用する場合にのみ必要です。
未使用のファイルを削除するには、次の操作を行います。
Android の場合 :
- HERE SDK フレームワークを展開し 、フォルダ
assets/voice_assets
を検索 - フレームワークのサイズを縮小する場合は、不要な音声パッケージを削除
- Android Studio を使用して AAR を再アーカイブ
iOS の場合 :
heresdk.framework
の内部でフォルダios-arm64/voice_assets
を開き、不要な音声パッケージを削除します。
ここで サポートされているすべての音声言語のリストと、 HERE SDK フレームワーク内に保存されている関連する音声スキンの名前を見つけることができます。
未使用のフォントを削除
未使用のフォントを削除することで、 HERE SDK のサイズを削減できます。 これについては、 ここで説明します。
Android の ABI スプリット
サイズ管理 : ABI 分割を使用すると、 HERE SDK AAR バイナリファイルのサイズを削減できます。 その結果、アプリケーションが使用するデバイスのストレージ容量が少なくなります。
デフォルトでは、HERE SDKには次のAbis for Androidが含まれています。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を使用することを検討してください。
iOS のファットバイナリ
iOS向けHERE SDKフレームワークは 、デバイス(arm64) と シミュレータ(x86_64)用に構築されたファットバイナリです。 したがって、両方のアーキテクチャが含まれています。 これにより、シミュレータ と 実際のデバイスに簡単に導入できます。 また、Xcodeのクラッシュを象徴するデバッグシンボルも含まれています。
HERE SDK フレームワークは Apple の XCFramework バンドルタイプ (XCFW) に準拠しているため、アプリの配布に使用できます。 Xcode で は、アプリに署名する開発チームを選択し、 汎用 iOS デバイス を選択 して 、 [ 製品 ] -> [ アーカイブ] を選択する必要があります。
ターゲットデバイス用にエクスポートされたアプリ(つまり、結果のIPA)のバイナリサイズは、占有するスペースが少なくなります。 不要なファイルを手動で削除することもできます。 ただし、アーカイブ時に明示的に除外しない限り、IPAにはすべてのアーキテクチャが含まれていることに注意してください。 デバイス上の実際のサイズははるかに少ないスペースを占有し、Appleは必要なアーキテクチャのみを含めることを保証します。 したがって、App Storeからの実際のダウンロードサイズも はるかに小さくなります。 このXcodeガイドも参照してください。 そのため、App Storeを介してアプリをデプロイする場合は、HERE SDKフレームワークをそのまま使用することをお勧めします。デプロイプロセスの一部としてすべてのサイズの最適化が自動的に行われるためです。
その他のオプション
HERE SDK の最適化-その他のオプションは次のとおりです。
さらに、すべてのエンジンには、フィーチャーの設定方法を許可するいくつかのオプションが含まれています。 たとえば、SearchEngine
を使用する場合、SearchOptions
を指定して、返される検索結果を制限できます。