Skip to content

Commit

Permalink
fix: native search sdk 1.1.0 update for startup fixes (#250)
Browse files Browse the repository at this point in the history
* fix: native search sdk 1.1.0 update for startup fixes

* style: fixing linter issues

* style: fixing linter issues

* chore: regenerating the license
  • Loading branch information
mikeringrose authored Jun 13, 2024
1 parent 5e5b342 commit 2a8a883
Show file tree
Hide file tree
Showing 16 changed files with 83 additions and 64 deletions.
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

===========================================================================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

/**
Expand Down Expand Up @@ -75,7 +75,7 @@ public interface AddressAutofill {
): AddressAutofill {
return AddressAutofillImpl.create(
accessToken = accessToken,
app = BaseSearchSdkInitializer.app,
app = BaseSearchSdkInitializerImpl.app,
locationEngine = locationEngine
)
}
Expand Down
2 changes: 1 addition & 1 deletion MapboxSearch/base/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ android {

lint {
abortOnError true
disable 'ParcelCreator', 'ContentDescription'
disable 'ParcelCreator', 'ContentDescription', 'EnsureInitializerMetadata'
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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<Unit> {

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<Class<out Initializer<*>>> {
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<Unit>() {
override val initializerClass = BaseSearchSdkInitializerImpl::class.java
}
Original file line number Diff line number Diff line change
@@ -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<Unit> {

override fun create(context: Context) {
appContext = context.applicationContext

SdkInfoRegistryFactory.getInstance().registerSdkInformation(
SdkInformation(
UserAgentProvider.sdkName,
UserAgentProvider.sdkVersionName,
UserAgentProvider.sdkPackageName
)
)
}

override fun dependencies(): List<Class<out Initializer<*>>> {
return listOf(MapboxSearchCoreInitializerImpl::class.java)
}

companion object {
lateinit var appContext: Context

val app: Application
get() = appContext as Application
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -212,7 +212,7 @@ public interface Discover {
): Discover {
val engine = DiscoverSearchEngine.create(
accessToken,
BaseSearchSdkInitializer.app,
BaseSearchSdkInitializerImpl.app,
locationEngine
)

Expand Down
2 changes: 1 addition & 1 deletion MapboxSearch/gradle/versions.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

/**
Expand Down Expand Up @@ -81,7 +81,7 @@ public interface PlaceAutocomplete {
): PlaceAutocomplete {
return PlaceAutocompleteImpl.create(
accessToken = accessToken,
app = BaseSearchSdkInitializer.app,
app = BaseSearchSdkInitializerImpl.app,
locationEngine = locationEngine
)
}
Expand Down
2 changes: 1 addition & 1 deletion MapboxSearch/sdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ android {

lint {
abortOnError true
disable 'ParcelCreator'
disable 'ParcelCreator', 'EnsureInitializerMetadata'
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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<MapboxSearchSdk> {
override fun create(context: Context): MapboxSearchSdk {
MapboxSearchSdk.initialize(context.applicationContext as Application)
return MapboxSearchSdk
}

override fun dependencies(): List<Class<out Initializer<*>>> {
return listOf(BaseSearchSdkInitializer::class.java)
}
internal class MapboxSearchSdkInitializer : BaseMapboxInitializer<MapboxSearchSdk>() {
override val initializerClass = MapboxSearchSdkInitializerImpl::class.java
}
Original file line number Diff line number Diff line change
@@ -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<MapboxSearchSdk> {
override fun create(context: Context): MapboxSearchSdk {
MapboxSearchSdk.initialize(context.applicationContext as Application)
return MapboxSearchSdk
}

override fun dependencies(): List<Class<out Initializer<*>>> {
return listOf(BaseSearchSdkInitializerImpl::class.java)
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -98,7 +98,7 @@ internal class SearchEngineFactory {
} else {
WrapperLocationProvider(
LocationEngineAdapter(
BaseSearchSdkInitializer.app,
BaseSearchSdkInitializerImpl.app,
settings.locationEngine
)
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 2a8a883

Please sign in to comment.