diff --git a/LICENSE.md b/LICENSE.md index 4ba895fdd..5defc0644 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -309,7 +309,7 @@ License: [The Apache Software License, Version 2.0](http://www.apache.org/licens =========================================================================== Mapbox Search Android uses portions of the Android App Startup Runtime. -URL: [https://developer.android.com/jetpack/androidx/releases/startup#1.1.0](https://developer.android.com/jetpack/androidx/releases/startup#1.1.0) +URL: [https://developer.android.com/jetpack/androidx/releases/startup#1.1.1](https://developer.android.com/jetpack/androidx/releases/startup#1.1.1) License: [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) =========================================================================== diff --git a/MapboxSearch/autofill/src/main/java/com/mapbox/search/autofill/AddressAutofill.kt b/MapboxSearch/autofill/src/main/java/com/mapbox/search/autofill/AddressAutofill.kt index f0af469da..69921155e 100644 --- a/MapboxSearch/autofill/src/main/java/com/mapbox/search/autofill/AddressAutofill.kt +++ b/MapboxSearch/autofill/src/main/java/com/mapbox/search/autofill/AddressAutofill.kt @@ -5,7 +5,7 @@ import com.mapbox.android.core.location.LocationEngine import com.mapbox.android.core.location.LocationEngineProvider import com.mapbox.bindgen.Expected import com.mapbox.geojson.Point -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import com.mapbox.search.base.location.defaultLocationEngine /** @@ -75,7 +75,7 @@ public interface AddressAutofill { ): AddressAutofill { return AddressAutofillImpl.create( accessToken = accessToken, - app = BaseSearchSdkInitializer.app, + app = BaseSearchSdkInitializerImpl.app, locationEngine = locationEngine ) } diff --git a/MapboxSearch/base/build.gradle b/MapboxSearch/base/build.gradle index 7d0ce9616..d09ff24bb 100644 --- a/MapboxSearch/base/build.gradle +++ b/MapboxSearch/base/build.gradle @@ -55,7 +55,7 @@ android { lint { abortOnError true - disable 'ParcelCreator', 'ContentDescription' + disable 'ParcelCreator', 'ContentDescription', 'EnsureInitializerMetadata' } } diff --git a/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializer.kt b/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializer.kt index febda9c73..cb0d27d05 100644 --- a/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializer.kt +++ b/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializer.kt @@ -1,39 +1,7 @@ package com.mapbox.search.base -import android.app.Application -import android.content.Context -import androidx.startup.Initializer -import com.mapbox.common.MapboxSDKCommonInitializer -import com.mapbox.common.SdkInfoRegistryFactory -import com.mapbox.common.SdkInformation -import com.mapbox.common.core.module.CommonSingletonModuleProvider -import com.mapbox.search.base.utils.UserAgentProvider +import com.mapbox.common.BaseMapboxInitializer -class BaseSearchSdkInitializer : Initializer { - - override fun create(context: Context) { - appContext = context.applicationContext - CommonSingletonModuleProvider.loaderInstance.load(SEARCH_SDK_NATIVE_LIBRARY_NAME) - - SdkInfoRegistryFactory.getInstance().registerSdkInformation( - SdkInformation( - UserAgentProvider.sdkName, - UserAgentProvider.sdkVersionName, - UserAgentProvider.sdkPackageName - ) - ) - } - - override fun dependencies(): List>> { - return listOf(MapboxSDKCommonInitializer::class.java) - } - - companion object { - private const val SEARCH_SDK_NATIVE_LIBRARY_NAME = "SearchCore" - - lateinit var appContext: Context - - val app: Application - get() = appContext as Application - } +class BaseSearchSdkInitializer : BaseMapboxInitializer() { + override val initializerClass = BaseSearchSdkInitializerImpl::class.java } diff --git a/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializerImpl.kt b/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializerImpl.kt new file mode 100644 index 000000000..2152f35f3 --- /dev/null +++ b/MapboxSearch/base/src/main/java/com/mapbox/search/base/BaseSearchSdkInitializerImpl.kt @@ -0,0 +1,35 @@ +package com.mapbox.search.base + +import android.app.Application +import android.content.Context +import androidx.startup.Initializer +import com.mapbox.common.SdkInfoRegistryFactory +import com.mapbox.common.SdkInformation +import com.mapbox.search.base.utils.UserAgentProvider +import com.mapbox.search.core.MapboxSearchCoreInitializerImpl + +class BaseSearchSdkInitializerImpl : Initializer { + + override fun create(context: Context) { + appContext = context.applicationContext + + SdkInfoRegistryFactory.getInstance().registerSdkInformation( + SdkInformation( + UserAgentProvider.sdkName, + UserAgentProvider.sdkVersionName, + UserAgentProvider.sdkPackageName + ) + ) + } + + override fun dependencies(): List>> { + return listOf(MapboxSearchCoreInitializerImpl::class.java) + } + + companion object { + lateinit var appContext: Context + + val app: Application + get() = appContext as Application + } +} diff --git a/MapboxSearch/base/src/main/java/com/mapbox/search/base/location/LocationUtils.kt b/MapboxSearch/base/src/main/java/com/mapbox/search/base/location/LocationUtils.kt index 296106674..b56bda37f 100644 --- a/MapboxSearch/base/src/main/java/com/mapbox/search/base/location/LocationUtils.kt +++ b/MapboxSearch/base/src/main/java/com/mapbox/search/base/location/LocationUtils.kt @@ -3,13 +3,13 @@ package com.mapbox.search.base.location import android.content.Context import com.mapbox.android.core.location.LocationEngineProvider import com.mapbox.geojson.BoundingBox -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import kotlin.math.abs import kotlin.math.log2 import kotlin.math.max import kotlin.math.min -fun defaultLocationEngine(context: Context = BaseSearchSdkInitializer.app) = +fun defaultLocationEngine(context: Context = BaseSearchSdkInitializerImpl.app) = LocationEngineProvider.getBestLocationEngine(context) fun calculateMapZoom(bbox: BoundingBox): Float { diff --git a/MapboxSearch/discover/src/main/java/com/mapbox/search/discover/Discover.kt b/MapboxSearch/discover/src/main/java/com/mapbox/search/discover/Discover.kt index 491ea595f..c223a82b7 100644 --- a/MapboxSearch/discover/src/main/java/com/mapbox/search/discover/Discover.kt +++ b/MapboxSearch/discover/src/main/java/com/mapbox/search/discover/Discover.kt @@ -6,7 +6,7 @@ import com.mapbox.android.core.location.LocationEngineProvider import com.mapbox.bindgen.Expected import com.mapbox.geojson.BoundingBox import com.mapbox.geojson.Point -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import com.mapbox.search.base.core.getUserActivityReporter import com.mapbox.search.base.location.defaultLocationEngine import com.mapbox.search.common.AsyncOperationTask @@ -212,7 +212,7 @@ public interface Discover { ): Discover { val engine = DiscoverSearchEngine.create( accessToken, - BaseSearchSdkInitializer.app, + BaseSearchSdkInitializerImpl.app, locationEngine ) diff --git a/MapboxSearch/gradle/versions.gradle b/MapboxSearch/gradle/versions.gradle index 9884c1ea5..c10a08a42 100644 --- a/MapboxSearch/gradle/versions.gradle +++ b/MapboxSearch/gradle/versions.gradle @@ -45,7 +45,7 @@ ext { common_sdk_version = '23.10.1' mapbox_base_version = '0.8.0' - search_native_version = '1.0.8' + search_native_version = '1.1.0' detekt_version = '1.19.0' diff --git a/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngine.kt b/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngine.kt index 70ecece1b..ca127da1e 100644 --- a/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngine.kt +++ b/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngine.kt @@ -7,7 +7,7 @@ import com.mapbox.common.TileStoreOptions import com.mapbox.common.TilesetDescriptor import com.mapbox.geojson.Feature import com.mapbox.geojson.Point -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import com.mapbox.search.base.SearchRequestContextProvider import com.mapbox.search.base.core.CoreApiType import com.mapbox.search.base.core.CoreEngineOptions @@ -343,7 +343,7 @@ public interface OfflineSearchEngine { */ @JvmStatic public fun create(settings: OfflineSearchEngineSettings): OfflineSearchEngine { - val app = BaseSearchSdkInitializer.appContext as Application + val app = BaseSearchSdkInitializerImpl.appContext as Application with(settings) { tileStore.setOption( diff --git a/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngineImpl.kt b/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngineImpl.kt index d0d679b97..ac7947374 100644 --- a/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngineImpl.kt +++ b/MapboxSearch/offline/src/main/java/com/mapbox/search/offline/OfflineSearchEngineImpl.kt @@ -1,9 +1,11 @@ package com.mapbox.search.offline +import com.mapbox.common.BaseMapboxInitializer import com.mapbox.geojson.BoundingBox import com.mapbox.geojson.Feature import com.mapbox.geojson.LineString import com.mapbox.geojson.Point +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import com.mapbox.search.base.SearchRequestContextProvider import com.mapbox.search.base.core.CoreApiType import com.mapbox.search.base.core.CoreOfflineIndexObserver @@ -44,6 +46,8 @@ internal class OfflineSearchEngineImpl( private var isEngineReady: Boolean = true init { + BaseMapboxInitializer.init(BaseSearchSdkInitializerImpl::class.java) + coreEngine.setTileStore(settings.tileStore) { synchronized(initializationLock) { isEngineReady = true diff --git a/MapboxSearch/place-autocomplete/src/main/java/com/mapbox/search/autocomplete/PlaceAutocomplete.kt b/MapboxSearch/place-autocomplete/src/main/java/com/mapbox/search/autocomplete/PlaceAutocomplete.kt index 84474c8d7..16f16eed0 100644 --- a/MapboxSearch/place-autocomplete/src/main/java/com/mapbox/search/autocomplete/PlaceAutocomplete.kt +++ b/MapboxSearch/place-autocomplete/src/main/java/com/mapbox/search/autocomplete/PlaceAutocomplete.kt @@ -6,7 +6,7 @@ import com.mapbox.android.core.location.LocationEngineProvider import com.mapbox.bindgen.Expected import com.mapbox.geojson.BoundingBox import com.mapbox.geojson.Point -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import com.mapbox.search.base.location.defaultLocationEngine /** @@ -81,7 +81,7 @@ public interface PlaceAutocomplete { ): PlaceAutocomplete { return PlaceAutocompleteImpl.create( accessToken = accessToken, - app = BaseSearchSdkInitializer.app, + app = BaseSearchSdkInitializerImpl.app, locationEngine = locationEngine ) } diff --git a/MapboxSearch/sdk/build.gradle b/MapboxSearch/sdk/build.gradle index a5ccec098..89391a390 100644 --- a/MapboxSearch/sdk/build.gradle +++ b/MapboxSearch/sdk/build.gradle @@ -71,7 +71,7 @@ android { lint { abortOnError true - disable 'ParcelCreator' + disable 'ParcelCreator', 'EnsureInitializerMetadata' } } diff --git a/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializer.kt b/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializer.kt index 0c205a528..8563330b0 100644 --- a/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializer.kt +++ b/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializer.kt @@ -1,17 +1,7 @@ package com.mapbox.search -import android.app.Application -import android.content.Context -import androidx.startup.Initializer -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.common.BaseMapboxInitializer -internal class MapboxSearchSdkInitializer : Initializer { - override fun create(context: Context): MapboxSearchSdk { - MapboxSearchSdk.initialize(context.applicationContext as Application) - return MapboxSearchSdk - } - - override fun dependencies(): List>> { - return listOf(BaseSearchSdkInitializer::class.java) - } +internal class MapboxSearchSdkInitializer : BaseMapboxInitializer() { + override val initializerClass = MapboxSearchSdkInitializerImpl::class.java } diff --git a/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializerImpl.kt b/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializerImpl.kt new file mode 100644 index 000000000..ae9c57c2d --- /dev/null +++ b/MapboxSearch/sdk/src/main/java/com/mapbox/search/MapboxSearchSdkInitializerImpl.kt @@ -0,0 +1,17 @@ +package com.mapbox.search + +import android.app.Application +import android.content.Context +import androidx.startup.Initializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl + +internal class MapboxSearchSdkInitializerImpl : Initializer { + override fun create(context: Context): MapboxSearchSdk { + MapboxSearchSdk.initialize(context.applicationContext as Application) + return MapboxSearchSdk + } + + override fun dependencies(): List>> { + return listOf(BaseSearchSdkInitializerImpl::class.java) + } +} diff --git a/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineFactory.kt b/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineFactory.kt index 435e23e6c..76fa3fa2c 100644 --- a/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineFactory.kt +++ b/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineFactory.kt @@ -1,7 +1,7 @@ package com.mapbox.search import com.mapbox.search.analytics.AnalyticsService -import com.mapbox.search.base.BaseSearchSdkInitializer +import com.mapbox.search.base.BaseSearchSdkInitializerImpl import com.mapbox.search.base.StubCompletionCallback import com.mapbox.search.base.core.CoreEngineOptions import com.mapbox.search.base.core.CoreLocationProvider @@ -98,7 +98,7 @@ internal class SearchEngineFactory { } else { WrapperLocationProvider( LocationEngineAdapter( - BaseSearchSdkInitializer.app, + BaseSearchSdkInitializerImpl.app, settings.locationEngine ) ) { diff --git a/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineImpl.kt b/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineImpl.kt index f739a961b..35245ac01 100644 --- a/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineImpl.kt +++ b/MapboxSearch/sdk/src/main/java/com/mapbox/search/SearchEngineImpl.kt @@ -1,5 +1,6 @@ package com.mapbox.search +import com.mapbox.common.BaseMapboxInitializer import com.mapbox.search.adapter.BaseSearchCallbackAdapter import com.mapbox.search.adapter.BaseSearchMultipleSelectionCallbackAdapter import com.mapbox.search.adapter.BaseSearchSelectionCallbackAdapter @@ -54,6 +55,10 @@ internal class SearchEngineImpl( private val indexableDataProvidersRegistry: IndexableDataProvidersRegistry, ) : BaseSearchEngine(), SearchEngine { + init { + BaseMapboxInitializer.init(MapboxSearchSdkInitializerImpl::class.java) + } + override fun search( query: String, options: SearchOptions,