diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml
index 0123da5..1e01ef7 100644
--- a/.github/workflows/compilation-check.yml
+++ b/.github/workflows/compilation-check.yml
@@ -9,13 +9,22 @@ on:
jobs:
build:
runs-on: macOS-latest
-
+ env:
+ MAPBOX_SECRET_TOKEN: ${{ secrets.MAPBOX_SECRET_TOKEN }}
+ MAPBOX_PUBLIC_TOKEN: ${{ secrets.MAPBOX_PUBLIC_TOKEN }}
+ GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
steps:
- uses: actions/checkout@v1
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
+ - name: Set up netrc
+ uses: extractions/netrc@v1
+ with:
+ machine: api.mapbox.com
+ username: mapbox
+ password: ${{ secrets.MAPBOX_SECRET_TOKEN }}
- name: Cocoapods install
run: (cd sample/ios-app && pod install)
- name: Check library
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 28e15bb..c294b2b 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -18,13 +18,21 @@ jobs:
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEYID }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
SIGNING_KEY: ${{ secrets.GPG_KEY_CONTENTS }}
-
+ MAPBOX_SECRET_TOKEN: ${{ secrets.MAPBOX_SECRET_TOKEN }}
+ MAPBOX_PUBLIC_TOKEN: ${{ secrets.MAPBOX_PUBLIC_TOKEN }}
+ GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
steps:
- uses: actions/checkout@v1
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
+ - name: Set up netrc
+ uses: extractions/netrc@v1
+ with:
+ machine: api.mapbox.com
+ username: mapbox
+ password: ${{ secrets.MAPBOX_SECRET_TOKEN }}
- name: Cocoapods install
run: (cd sample/ios-app && pod install)
- name: Publish library
diff --git a/README.md b/README.md
index 24ab74b..0b1aa90 100755
--- a/README.md
+++ b/README.md
@@ -170,7 +170,29 @@ class MarkerViewModel(
## Samples
Please see more examples in the [sample directory](sample).
-## Set Up Locally
+## Set Up Locally
+Before open project need to setup `gradle.properties` with tokens:
+```
+# mapbox tokens by guide https://docs.mapbox.com/android/maps/guides/install/
+mapbox.secretToken=YOUR_SECRET_MAPBOX_KEY
+mapbox.publicToken=YOUR_PUBLIC_MAPBOX_KEY
+
+# google maps api key by guide https://developers.google.com/maps/documentation/android-sdk/get-api-key
+googleMaps.apiKey=YOUR_API_KEY
+```
+
+# ios info.plist setup with tokens:
+```
+MGLMapboxAccessToken=YOUR_PUBLIC_MAPBOX_KEY
+GoogleAPIkey=YOUR_API_KEY
+```
+add the following entry to your `.netrc` file:
+```
+machine api.mapbox.com
+login mapbox
+password YOUR_SECRET_MAPBOX_KEY
+```
+
- The [maps directory](maps) contains the base classes for all maps providers;
- The [maps-google directory](maps-google) contains the Google Maps implementation;
- The [maps-mapbox directory](maps-mapbox) contains the mapbox implementation;
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 5e113f0..310b673 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -8,9 +8,10 @@ testExtJunitVersion = "1.1.1"
playServicesLocationVersion = "18.0.0"
playServicesMapsVersion = "17.0.0"
googleMapsServicesVersion = "0.2.11"
-mapboxVersion = "9.2.1"
-mapboxNavigationVersion = "0.42.6"
+mapboxVersion = "9.6.1"
+mapboxNavigationVersion = "1.5.1"
mapboxAnnotationVersion = "0.9.0"
+mapboxServicesVersion = "5.8.0"
multidexVersion = "2.0.1"
kotlinxSerializationVersion = "1.2.1"
coroutinesVersion = "1.5.0-native-mt"
@@ -30,8 +31,9 @@ playServicesLocation = { module = "com.google.android.gms:play-services-location
playServicesMaps = { module = "com.google.android.gms:play-services-maps", version.ref = "playServicesMapsVersion" }
googleMapsServices = { module = "com.google.maps:google-maps-services", version.ref = "googleMapsServicesVersion" }
mapbox = { module = "com.mapbox.mapboxsdk:mapbox-android-sdk", version.ref = "mapboxVersion" }
-mapboxNavigation = { module = "com.mapbox.mapboxsdk:mapbox-android-navigation", version.ref = "mapboxNavigationVersion" }
+mapboxNavigation = { module = "com.mapbox.navigation:core", version.ref = "mapboxNavigationVersion" }
mapboxAnnotation = { module = "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9", version.ref = "mapboxAnnotationVersion" }
+mapboxServices = { module = "com.mapbox.mapboxsdk:mapbox-sdk-services", version.ref = "mapboxServicesVersion" }
multidex = { module = "androidx.multidex:multidex", version.ref = "multidexVersion" }
ktorClientOkHttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktorClientVersion" }
kotlinSerialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationVersion" }
diff --git a/maps-google/build.gradle.kts b/maps-google/build.gradle.kts
index f7bf144..20583c1 100644
--- a/maps-google/build.gradle.kts
+++ b/maps-google/build.gradle.kts
@@ -23,8 +23,8 @@ dependencies {
"androidMainImplementation"(libs.appCompat)
"androidMainImplementation"(libs.lifecycle)
- "androidMainImplementation"(libs.playServicesLocation)
- "androidMainImplementation"(libs.playServicesMaps)
+ "androidMainApi"(libs.playServicesLocation)
+ "androidMainApi"(libs.playServicesMaps)
"androidMainImplementation"(libs.googleMapsServices)
"androidMainImplementation"(libs.ktorClientOkHttp)
diff --git a/maps-mapbox/build.gradle.kts b/maps-mapbox/build.gradle.kts
index 4044fac..92242b6 100644
--- a/maps-mapbox/build.gradle.kts
+++ b/maps-mapbox/build.gradle.kts
@@ -18,9 +18,10 @@ dependencies {
"androidMainImplementation"(libs.appCompat)
"androidMainImplementation"(libs.lifecycle)
"androidMainImplementation"(libs.playServicesLocation)
- "androidMainImplementation"(libs.mapbox)
"androidMainImplementation"(libs.mapboxAnnotation)
- "androidMainImplementation"(libs.mapboxNavigation)
+ "androidMainImplementation"(libs.mapboxServices)
+ "androidMainApi"(libs.mapbox)
+ "androidMainApi"(libs.mapboxNavigation)
}
cocoaPods {
diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts
index 6d80cb9..4241244 100644
--- a/sample/android-app/build.gradle.kts
+++ b/sample/android-app/build.gradle.kts
@@ -14,6 +14,13 @@ android {
versionName = "0.1.0"
multiDexEnabled = true
+
+ val googleMapsApiKey: String = (System.getenv("GOOGLE_MAPS_API_KEY") ?: extra["googleMaps.apiKey"] as? String).orEmpty()
+ val mapboxPublicToken: String = (System.getenv("MAPBOX_PUBLIC_TOKEN") ?: extra["mapbox.publicToken"] as? String).orEmpty()
+
+ manifestPlaceholders["googleMapsApiKey"] = googleMapsApiKey
+ buildConfigField("String", "GOOGLE_MAPS_API_KEY", "\"$googleMapsApiKey\"")
+ buildConfigField("String", "MAPBOX_PUBLIC_TOKEN", "\"$mapboxPublicToken\"")
}
}
@@ -23,7 +30,6 @@ dependencies {
implementation(libs.playServicesMaps)
implementation(libs.googleMapsServices)
implementation(libs.mapbox)
- implementation(libs.mapboxAnnotation)
implementation(libs.multidex)
diff --git a/sample/android-app/src/main/AndroidManifest.xml b/sample/android-app/src/main/AndroidManifest.xml
index 7d1c132..ee7681f 100755
--- a/sample/android-app/src/main/AndroidManifest.xml
+++ b/sample/android-app/src/main/AndroidManifest.xml
@@ -22,7 +22,6 @@
-
-
+
diff --git a/sample/android-app/src/main/java/com/icerockdev/app/GoogleMapsActivity.kt b/sample/android-app/src/main/java/com/icerockdev/app/GoogleMapsActivity.kt
index 458ab18..0250d8c 100644
--- a/sample/android-app/src/main/java/com/icerockdev/app/GoogleMapsActivity.kt
+++ b/sample/android-app/src/main/java/com/icerockdev/app/GoogleMapsActivity.kt
@@ -27,8 +27,7 @@ class GoogleMapsActivity : MvvmActivity() {
override val viewModelVariableId: Int = BR.viewModel
override val viewModelClass: Class = MapboxViewModel::class.java
- private val mapboxToken = "YOUR-ACCESS-TOKEN"
+ private val mapboxToken = BuildConfig.MAPBOX_PUBLIC_TOKEN
override fun viewModelFactory(): ViewModelProvider.Factory {
return createViewModelFactory {
diff --git a/sample/ios-app/Podfile b/sample/ios-app/Podfile
index 6a48575..48da49c 100644
--- a/sample/ios-app/Podfile
+++ b/sample/ios-app/Podfile
@@ -12,9 +12,9 @@ platform :ios, '11.0'
target 'TestProj' do
# MultiPlatformLibrary
pod 'MultiPlatformLibrary', :path => '../mpp-library'
- pod 'Mapbox-iOS-SDK', '5.6.0'
- pod 'MapboxNavigation', '0.40.0'
- pod 'GoogleMaps', '3.7.0'
+ pod 'Mapbox-iOS-SDK', '6.3.0'
+ pod 'MapboxNavigation', '1.4.1'
+ pod 'GoogleMaps', '5.1.0'
end
# GoogleMaps is static library that already linked in moko-maps-google. Remove duplicated linking.
diff --git a/sample/ios-app/TestProj.xcodeproj/project.pbxproj b/sample/ios-app/TestProj.xcodeproj/project.pbxproj
index 6b320c3..e1d55ef 100644
--- a/sample/ios-app/TestProj.xcodeproj/project.pbxproj
+++ b/sample/ios-app/TestProj.xcodeproj/project.pbxproj
@@ -289,6 +289,7 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 4VU932NX78;
INFOPLIST_FILE = src/Info.plist;
+ ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = dev.icerock.moko.sample.maps;
PRODUCT_NAME = "moko-maps";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -307,6 +308,7 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 4VU932NX78;
INFOPLIST_FILE = src/Info.plist;
+ ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = dev.icerock.moko.sample.maps;
PRODUCT_NAME = "moko-maps";
PROVISIONING_PROFILE_SPECIFIER = "";
diff --git a/sample/ios-app/src/AppDelegate.swift b/sample/ios-app/src/AppDelegate.swift
index be44ee7..4cbbb7c 100755
--- a/sample/ios-app/src/AppDelegate.swift
+++ b/sample/ios-app/src/AppDelegate.swift
@@ -12,8 +12,7 @@ class AppDelegate: NSObject, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
- // TODO: Replace with your API Key from https://developers.google.com/maps/documentation/ios-sdk/
- GMSServices.provideAPIKey("YOUR-API-KEY")
+ GMSServices.provideAPIKey(Bundle.main.object(forInfoDictionaryKey: "GoogleAPIkey") as! String)
// For Mapbox add key "MGLMapboxAccessToken" in Info.plist
return true
diff --git a/sample/ios-app/src/GoogleMapViewController.swift b/sample/ios-app/src/GoogleMapViewController.swift
index f512b2e..96949b2 100644
--- a/sample/ios-app/src/GoogleMapViewController.swift
+++ b/sample/ios-app/src/GoogleMapViewController.swift
@@ -20,7 +20,7 @@ class GoogleMapViewController: UIViewController {
permissionsController: PermissionsController(),
googleMapController: GoogleMapController(
mapView: mapView,
- geoApiKey: "YOUR-API-KEY"
+ geoApiKey: Bundle.main.object(forInfoDictionaryKey: "GoogleAPIkey") as! String
)
)
diff --git a/sample/ios-app/src/Info.plist b/sample/ios-app/src/Info.plist
index 58bce56..fffcf9c 100755
--- a/sample/ios-app/src/Info.plist
+++ b/sample/ios-app/src/Info.plist
@@ -61,7 +61,9 @@
UIInterfaceOrientationPortraitUpsideDown
MGLMapboxAccessToken
- YOUR-ACCESS-TOKEN
+ YOUR_PUBLIC_MAPBOX_KEY
+ GoogleAPIkey
+ YOUR_API_KEY
MGLMapboxMetricsEnabledSettingShownInApp
diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts
index 7514743..2268b59 100644
--- a/sample/mpp-library/build.gradle.kts
+++ b/sample/mpp-library/build.gradle.kts
@@ -24,8 +24,6 @@ dependencies {
commonMainApi(projects.mapsGoogle)
commonMainApi(projects.mapsMapbox)
"androidMainImplementation"(libs.lifecycle)
- "androidMainImplementation"(libs.playServicesLocation)
- "androidMainImplementation"(libs.mapbox)
}
multiplatformResources {
diff --git a/settings.gradle.kts b/settings.gradle.kts
index e58fb09..697b2c0 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -10,7 +10,20 @@ dependencyResolutionManagement {
mavenCentral()
google()
- maven { url = uri("https://mapbox.bintray.com/mapbox") }
+ maven {
+ url = uri("https://api.mapbox.com/downloads/v2/releases/maven")
+ authentication {
+ create("basic", org.gradle.authentication.http.BasicAuthentication::class)
+ }
+ credentials {
+ // Do not change the username below.
+ // This should always be `mapbox` (not your username).
+ username = "mapbox"
+ // Use the secret token you stored in gradle.properties as the password
+ password = System.getenv("MAPBOX_SECRET_TOKEN")
+ ?: extra["mapbox.secretToken"] as? String
+ }
+ }
jcenter {
content {