HERE SDK を最適化します
この 最適化ガイド では、 HERE SDK のサイズを縮小し、ロードまたは処理する必要のあるデータを削減してランタイムの動作を最適化するためのオプションをいくつか示します。
機能設定を使用します
機能設定を使用 すると、MapView
をパンするとき、またはオフラインで使用するために新しいRegion
をダウンロードするときに、マップ データ をロードする量を指定できます。 たとえば、ターン・バイ・ターンナビ (矢印ナビ) などの機能がアプリケーションで使用されていない場合は、削除できます。
その結果、パニングする MapView
と、キャッシュにダウンロードされるデータ量が少なくなります。 さらに、新しいをダウンロードすると Region
、サイズが小さくなります。
「 FeatureConfiguration 」が AndroidManifest
および / または PList
ファイルに存在する場合、一覧表示されている機能のみが有効になり、それ以外の機能はすべて無効になります。 1 つの機能のみを無効にする場合は、他のすべての機能を有効にするか、または無効にする必要があります。
たとえば、次の例では 、ナビゲーション およびトラック機能のみを有効にし、その他の機能はすべて無効にします。 Android デバイスで AndroidManifest
は、次のようにファイルを変更します。
<meta-data
android:name="com.here.sdk.feature_configuration"
android:value="NAVIGATION, TRUCK" />
iOS デバイスで Plist
は、次のようにファイルを変更します。
<key>FeatureConfiguration</key>
<array>
<string>NAVIGATION</string>
<string>TRUCK</string>
</array>
現在、次の機能を指定できます。
- "detail_rending" : 建物などの追加のレンダリングの詳細。 にのみ使用
MapView
されます。 設定されていない場合、オフラインのリージョンをダウンロードするとき、またはそのようなデータが含まれているエリアをプリフェッチするときに、データが除外されます。 ただし、オンラインでの使用中には、このようなデータがキャッシュにダウンロードされて表示されることがあります。 - " ナビゲーション " : ナビゲーション中のマップマッチングに使用されるマップ データ 。 設定されていない場合、オンラインまたはオフラインで使用しているときにナビゲーションが正しく動作しないことがあります。
- "offline_search" : 検索に使用されるマップ データ 。 設定されていない場合
OfflineSearchEngine
、を使用するとが正しく動作しないことがあります。 - "offline_routing" : ルートの計算に使用されるマップ データ 。 設定されていない場合
OfflineRoutingEngine
、を使用するとが正しく動作しないことがあります。 - " トラック " : トラックルートの計算に使用されるマップ データ 。 設定しない
OfflineRoutingEngine
と、を使用してトラックルートを計算するときにが正しく動作しないことがあります。 トラックナビゲーション中の地図の一致にも使用されます。 設定しないと、オフラインで使用しているときにトラックナビゲーションが正しく動作しないことがあります。 オンライントラックナビゲーションは、デバイスがオンライン接続されている場合でも機能します。 - "landmarks_3d" : テクスチャ付き 3D ランドマークのレンダリングに使用されるマップ データ 。 設定されていない場合、オフラインのリージョンをダウンロードするとき、またはそのようなデータが含まれているエリアをプリフェッチするときに、データが除外されます。
landmarks
でレイヤーが表示されるように設定 MapScene
されている場合、オンライン使用中も 3D ランドマークが表示されます。 - "Junction _view_3x4" 、 "Junction _view_16x9" : 複雑な交差点に適した 3D ビジュアル。 このアセットデータは、ガイダンス中に SVG 画像を表示するために使用できます。 有効にする
JunctionViewWarning
と、ダウンロードされたリージョンに、対応するイベントで使用される交差点表示イメージが含まれます。 これは、旅程を開始する前にアセットをダウンロードする場合に役立ちます。 有効になっていない場合、必要なデータが必要なときにダウンロードされます。 各イメージは最大 15 MB を使用できます。 HERE SDK の今後のリリースでは、リアルさのレベルを下げることでサイズが最適化されることに注意してください。 デフォルトでは、レイヤーは有効になっていません。 - "Junction _ SIGN_3x4" 、 "Junction _ SIGN_16x9" : 署名者のビジュアル。 このアセットデータは、ガイダンス中に SVG 画像を表示するために使用できます。 有効にする
SignpostWarning
と、ダウンロードされたリージョンに、対応するイベントで使用される交差点表示イメージが含まれます。 有効になっていない場合、必要なデータが必要なときにダウンロードされます。 各イメージは最大 300 KB を使用できます。 有効になっていない場合、必要なデータが必要なときにダウンロードされます。 デフォルトでは、レイヤーは有効になっていません。 - " レンダリング中 " : Carto POI などの基本的なレンダリング機能のセット。
- " 交通状況 " : RDS-TMC 形式を使用してトラフィックブロードキャスト機能を提供するマップ データ 。 インターネット接続がない場合に使用し
OfflineRoutingEngine
て、ルーティングモジュールが無線チャネル経由で送信されるトラフィックデータを利用して、を使用してルートを作成できるようにします。 - "EV" : EV 充電ステーションのオフライン マップ データ。
- "TRACK_SERVICE_ATTRIBUTES" : トラックに関連する属性をから戻すことができます
OfflineSearchEngine
。 - "FUEL_STATUS_ATTRIBUTES" : によって燃料属性が返されるようにし
OfflineSearchEngine
ます。 - "offline_bus_routing" : バスルートの計算に使用されるマップ データ 。 設定されていない場合、
OfflineRoutingEngine
は BusOptions
でルートを計算できないことがあります。 - " 地形 " : 地形データを表すために使用されるマップ データ 。 デフォルトでは無効になっています。
"offline_search" 、 "offline_routing" 、 "cart" 、 "navigation" 、 "rending" 、 "detail_rendering" 、 "traffic" がデフォルトで有効になっています。 他のすべてのレイヤーは、デフォルトで無効になっています。 「レンダリング」レイヤーはベースレイヤーであり、無効にすることはできません。
機能の設定は、次のアプリケーションアップデートのインストール後にを呼び出して更新でき mapUpdater.performFeatureUpdate()
ます。 AndroidManifest
/file で機能設定が更新されたら、このメソッドを呼び出しPList
ます。
その結果、キャッシュされたマップ データ が削除され、その後更新されます。 また、ダウンロードしたリージョンが更新され、変更内容が反映されます。
アップデートをいつ実行するかは開発者の責任で決定してください。 HERE SDK は、このような更新がいつ行われるかを決定または通知しません。 performFeatureUpdate()
の呼び出しは、アプリケーションが更新された後で 1 回のみ必要です。 開発者が機能の設定を変更していない場合は、この関数を呼び出す必要はありません。
注
SearchEngine
や RoutingEngine
などのエンジン では、キャッシュされた、またはダウンロードされたマップ データは使用されません。 関連する機能が無効になっていない場合、OfflineSearchEngine
および OFflineRoutingEngine
のみがこのようなデータを使用します。 たとえば、アプリがオンラインで完全に動作することが確実な場合は、オフライン検索機能を無効にしても安全です。 ただし、一時的に接続が失われたときにアプリ が POI を検索できるようにする OfflineSearchEngine
場合は、そのような失われた POI を検出したときににに切り替えることができます。そのため、関連する機能を無効にしないでください。
上記のように、一部の無効化された機能については、デバイスがオンライン接続され、機能が必要な場合に、デバイスが対応するデータをダウンロードすることがあります。 たとえば、「 landmarks_3d 」機能が無効になっているが、対応する MapScene
レイヤーが有効になっている場合 MapView
、デバイスは、ビューポイント で 3D ランドマークが表示されたときに、必要なテクスチャをダウンロードして 3D ランドマークをレンダリングします。
「 offline_search 」と「 offline_routing 」を除く、上記のすべての一覧表の機能について、 HERE SDK はまず必要なデータがキャッシュで利用可能かどうかを確認します。 オフライン Region
で使用するためにダウンロードされたがあるかどうかが確認されます。 見つからない場合、 HERE SDK は必要なデータをワイヤレスでダウンロードしようとします。 "offline_search" と "offline_routing" の場合、動作は同じですが、 AIR 経由ではデータは要求されません。
未使用の音声を削除します
未使用の音声ガイダンスファイルを削除することで、 HERE SDK のサイズを削減できます。
これらのファイルは、テキスト / スピーチボイスメッセージでターン・バイ・ターンナビ (矢印ナビ) を使用する場合にのみ必要です。
未使用のファイルを削除するには、次の操作を行います。
Android の場合 :
- HERE SDK フレームワークを展開し
assets/voice_assets
、フォルダを検索します。 - フレームワークのサイズを縮小する場合は、不要な音声パッケージを削除できます。
- Android Studio を使用して AAR を再アーカイブします。
iOS の場合 :
- 内部
heresdk.framework
でフォルダを開き ios-arm64/voice_assets
、不要な音声パッケージを削除します。
HERE サポートされているすべての音声言語のリストと、 HERE SDK フレームワーク内に保存されている関連する音声スキンの名前を見つけることができます。
未使用のフォントを削除します
未使用のフォントを削除することで、 HERE SDK のサイズを削減できます。 これについては、 HERE で説明します。
ABIはAndroidのために分割されます
サイズ管理 : 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
、 すべての Abis を含むユニバーサル APK も生成されますが、これは明らかにはるかに大きくなります。
splits
Gradle ブロックの詳細について は、「 Abis 用に複数の 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のFat Binary
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
に指定できます。