From 50e9220d59f03185e0d0e8e46a4154dbdf8ab764 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Fri, 2 Jul 2021 19:17:48 +0700 Subject: [PATCH 01/22] #58 temp commit --- .github/workflows/compilation-check.yml | 8 +- .github/workflows/publish.yml | 8 +- README.md | 29 +-- build.gradle.kts | 140 ++------------- buildSrc/build.gradle.kts | 24 --- buildSrc/src/main/kotlin/Deps.kt | 170 ------------------ gradle/libs.versions.toml | 51 ++++++ gradle/wrapper/gradle-wrapper.properties | 2 +- maps-build-logic/build.gradle.kts | 17 ++ .../kotlin/android-app-convention.gradle.kts | 32 ++++ .../kotlin/android-base-convention.gradle.kts | 14 ++ .../android-library-convention.gradle.kts | 13 ++ .../android-publication-convention.gradle.kts | 15 ++ .../main/kotlin/detekt-convention.gradle.kts | 15 ++ .../kotlin/javadoc-stub-convention.gradle.kts | 16 ++ ...ultiplatform-library-convention.gradle.kts | 31 ++++ .../kotlin/publication-convention.gradle.kts | 75 ++++++++ maps-google/build.gradle.kts | 40 ++--- maps-mapbox/build.gradle.kts | 26 +-- maps/build.gradle.kts | 25 ++- sample/android-app/build.gradle.kts | 48 ++--- sample/build.gradle.kts | 24 --- sample/mpp-library/build.gradle.kts | 45 ++--- settings.gradle.kts | 25 +++ 24 files changed, 408 insertions(+), 485 deletions(-) delete mode 100644 buildSrc/build.gradle.kts delete mode 100755 buildSrc/src/main/kotlin/Deps.kt create mode 100644 gradle/libs.versions.toml create mode 100644 maps-build-logic/build.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/android-app-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/android-base-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/android-library-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/android-publication-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/detekt-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts create mode 100644 maps-build-logic/src/main/kotlin/publication-convention.gradle.kts delete mode 100644 sample/build.gradle.kts diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 0a53f7a..734906a 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -12,17 +12,15 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Cocoapods install run: (cd sample/ios-app && pod install) - - name: Build K/N cache - run: ./gradlew :maps:runCommonizer - name: Check library run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 - name: Install pods with kotlin run: cd sample/ios-app && pod install - name: build ios sample - run: cd sample/ios-app && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO \ No newline at end of file + run: cd sample/ios-app && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug -sdk iphonesimulator -arch x86_64 build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO | xcpretty diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 04346f1..28e15bb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,14 +21,12 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Cocoapods install run: (cd sample/ios-app && pod install) - - name: Build K/N cache - run: ./gradlew :maps:runCommonizer - name: Publish library run: ./gradlew publish release: @@ -44,6 +42,6 @@ jobs: with: commitish: ${{ github.ref }} tag_name: release/${{ github.event.inputs.version }} - release_name: Release ${{ github.event.inputs.version }} + release_name: ${{ github.event.inputs.version }} body: "Will be filled later" draft: true \ No newline at end of file diff --git a/README.md b/README.md index edf14ba..24ab74b 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![moko-maps](https://user-images.githubusercontent.com/5010169/71351401-27c14d80-25a6-11ea-9183-17821f6d4212.png) -[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0) [![Download](https://img.shields.io/maven-central/v/dev.icerock.moko/maps) ](https://repo1.maven.org/maven2/dev/icerock/moko/maps) ![kotlin-version](https://img.shields.io/badge/kotlin-1.4.31-orange) +[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0) [![Download](https://img.shields.io/maven-central/v/dev.icerock.moko/maps) ](https://repo1.maven.org/maven2/dev/icerock/moko/maps) ![kotlin-version](https://kotlin-version.aws.icerock.dev/kotlin-version?group=dev.icerock.moko&name=maps) # Mobile Kotlin maps module This is a Kotlin Multiplatform library that provides controls of maps to common code. @@ -7,7 +7,6 @@ This is a Kotlin Multiplatform library that provides controls of maps to common ## Table of Contents - [Features](#features) - [Requirements](#requirements) -- [Versions](#versions) - [Installation](#installation) - [Usage](#usage) - [Samples](#samples) @@ -25,26 +24,6 @@ This is a Kotlin Multiplatform library that provides controls of maps to common - Android API 16+ - iOS version 9.0+ -## Versions -### Bintray -- kotlin 1.3.61 - - 0.1.0 - - 0.1.1 - - 0.2.0 - - 0.2.1 - - 0.3.0 - - 0.4.0-dev-1 -- kotlin 1.3.70 - - 0.4.0-dev-2 - - 0.4.0-dev-3 - - 0.4.0-dev-4 -- kotlin 1.4.10 - - 0.5.0 - - 0.5.1 -### mavenCentral -- kotlin 1.4.31 - - 0.5.2 - ## Installation root build.gradle ```groovy @@ -59,9 +38,9 @@ allprojects { project build.gradle ```groovy dependencies { - commonMainApi("dev.icerock.moko:maps:0.5.2") - commonMainApi("dev.icerock.moko:maps-google:0.5.2") - commonMainApi("dev.icerock.moko:maps-mapbox:0.5.2") + commonMainApi("dev.icerock.moko:maps:0.6.0") + commonMainApi("dev.icerock.moko:maps-google:0.6.0") + commonMainApi("dev.icerock.moko:maps-mapbox:0.6.0") } kotlin.targets diff --git a/build.gradle.kts b/build.gradle.kts index acc76d7..b663b04 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,144 +1,34 @@ /* * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ - -import java.util.Base64 - -plugins { - plugin(Deps.Plugins.detekt) apply false -} +import org.gradle.api.internal.artifacts.DefaultModuleVersionSelector buildscript { repositories { mavenCentral() google() gradlePluginPortal() - - jcenter { - content { - includeGroup("org.jetbrains.trove4j") - } - } } dependencies { - plugin(Deps.Plugins.mokoResources) - plugin(Deps.Plugins.kotlinSerialization) + classpath(":maps-build-logic") + classpath("dev.icerock.moko:resources-generator:0.16.1") + classpath("org.jetbrains.kotlin:kotlin-serialization:1.5.20") } } allprojects { - repositories { - mavenCentral() - google() - - maven { url = uri("https://mapbox.bintray.com/mapbox") } - - jcenter { - content { - includeGroup("org.jetbrains.trove4j") - includeGroup("org.jetbrains.kotlinx") - } - } - } - - apply(plugin = Deps.Plugins.detekt.id) - - configure { - input.setFrom( - "src/commonMain/kotlin", - "src/androidMain/kotlin", - "src/iosMain/kotlin", - "src/iosX64Main/kotlin" - ) - } - - dependencies { - "detektPlugins"(Deps.Libs.Detekt.detektFormatting) - } - - plugins.withId(Deps.Plugins.androidLibrary.id) { - configure { - compileSdkVersion(Deps.Android.compileSdk) - - defaultConfig { - minSdkVersion(Deps.Android.minSdk) - targetSdkVersion(Deps.Android.targetSdk) - } - } - } - - plugins.withId(Deps.Plugins.mavenPublish.id) { + plugins.withId("org.gradle.maven-publish") { group = "dev.icerock.moko" - version = Deps.mokoMapsVersion - - val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") - } - - configure { - repositories.maven("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") { - name = "OSSRH" - - credentials { - username = System.getenv("OSSRH_USER") - password = System.getenv("OSSRH_KEY") - } - } - - publications.withType { - // Stub javadoc.jar artifact - artifact(javadocJar.get()) - - // Provide artifacts information requited by Maven Central - pom { - name.set("MOKO maps") - description.set("Control your map from common code for mobile (android & ios) Kotlin Multiplatform development") - url.set("https://github.com/icerockdev/moko-maps") - licenses { - license { - url.set("https://github.com/icerockdev/moko-maps/blob/master/LICENSE.md") - } - } - - developers { - developer { - id.set("Alex009") - name.set("Aleksey Mikhailov") - email.set("aleksey.mikhailov@icerockdev.com") - } - developer { - id.set("prokopishin") - name.set("Nikita Prokopishin") - email.set("nprokopishin@icerockdev.com") - } - developer { - id.set("Dorofeev") - name.set("Andrey Dorofeev") - email.set("adorofeev@icerockdev.com") - } - } - - scm { - connection.set("scm:git:ssh://github.com/icerockdev/moko-maps.git") - developerConnection.set("scm:git:ssh://github.com/icerockdev/moko-maps.git") - url.set("https://github.com/icerockdev/moko-maps") - } - } - } - - apply(plugin = Deps.Plugins.signing.id) - - configure { - val signingKeyId: String? = System.getenv("SIGNING_KEY_ID") - val signingPassword: String? = System.getenv("SIGNING_PASSWORD") - val signingKey: String? = System.getenv("SIGNING_KEY")?.let { base64Key -> - String(Base64.getDecoder().decode(base64Key)) - } - if (signingKeyId != null) { - useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) - sign(publications) - } - } + version = libs.versions.mokoMapsVersion.get() + } + configurations.configureEach { + resolutionStrategy { + val coroutines: MinimalExternalModuleDependency = rootProject.libs.coroutines.get() + val forcedCoroutines: ModuleVersionSelector = DefaultModuleVersionSelector.newSelector( + coroutines.module, + coroutines.versionConstraint.requiredVersion + ) + force(forcedCoroutines) } } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index e856d25..0000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -plugins { - id("org.jetbrains.kotlin.jvm") version("1.4.31") -} - -repositories { - mavenCentral() - google() - - jcenter { - content { - includeGroup("org.jetbrains.trove4j") - } - } -} - -dependencies { - implementation("dev.icerock:mobile-multiplatform:0.9.1") - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31") - implementation("com.android.tools.build:gradle:4.1.1") -} diff --git a/buildSrc/src/main/kotlin/Deps.kt b/buildSrc/src/main/kotlin/Deps.kt deleted file mode 100755 index 47947a1..0000000 --- a/buildSrc/src/main/kotlin/Deps.kt +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - - -object Deps { - private const val kotlinVersion = "1.4.31" - - private const val lifecycleVersion = "2.2.0" - private const val androidAppCompatVersion = "1.1.0" - private const val espressoCoreVersion = "3.2.0" - private const val testRunnerVersion = "1.2.0" - private const val testExtJunitVersion = "1.1.1" - private const val playServicesLocationVersion = "18.0.0" - private const val playServicesMapsVersion = "17.0.0" - private const val googleMapsServicesVersion = "0.2.11" - private const val mapboxVersion = "9.2.1" - private const val mapboxNavigationVersion = "0.42.6" - private const val mapboxAnnotationVersion = "0.9.0" - private const val multidexVersion = "2.0.1" - - private const val kotlinxSerializationVersion = "1.1.0" - private const val coroutinesVersion = "1.4.2-native-mt" - private const val ktorClientVersion = "1.5.2" - - private const val detektVersion = "1.15.0" - - private const val mokoGraphicsVersion = "0.6.1" - private const val mokoParcelizeVersion = "0.6.1" - private const val mokoResourcesVersion = "0.15.1" - private const val mokoMvvmVersion = "0.9.2" - private const val mokoGeoVersion = "0.3.2" - private const val mokoPermissionsVersion = "0.8.0" - const val mokoMapsVersion = "0.5.2" - - object Android { - const val compileSdk = 28 - const val targetSdk = 28 - const val minSdk = 21 - } - - object Plugins { - val androidApplication = GradlePlugin(id = "com.android.application") - val androidLibrary = GradlePlugin(id = "com.android.library") - val kotlinMultiplatform = GradlePlugin( - id = "org.jetbrains.kotlin.multiplatform", - module = "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" - ) - val kotlinKapt = GradlePlugin(id = "kotlin-kapt") - val kotlinAndroid = GradlePlugin(id = "kotlin-android") - val kotlinAndroidExtensions = GradlePlugin(id = "kotlin-parcelize") - val kotlinSerialization = GradlePlugin( - id = "org.jetbrains.kotlin.plugin.serialization", - module = "org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion" - ) - val mavenPublish = GradlePlugin(id = "org.gradle.maven-publish") - val signing = GradlePlugin(id = "signing") - - val mobileMultiplatform = GradlePlugin(id = "dev.icerock.mobile.multiplatform") - val iosFramework = GradlePlugin(id = "dev.icerock.mobile.multiplatform.ios-framework") - - val mokoResources = GradlePlugin( - id = "dev.icerock.mobile.multiplatform-resources", - module = "dev.icerock.moko:resources-generator:$mokoResourcesVersion" - ) - - val detekt = GradlePlugin( - id = "io.gitlab.arturbosch.detekt", - version = detektVersion - ) - } - - object Libs { - object Android { - const val appCompat = - "androidx.appcompat:appcompat:$androidAppCompatVersion" - const val lifecycle = - "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion" - const val playServicesLocation = - "com.google.android.gms:play-services-location:$playServicesLocationVersion" - const val playServicesMaps = - "com.google.android.gms:play-services-maps:$playServicesMapsVersion" - const val googleMapsServices = - "com.google.maps:google-maps-services:$googleMapsServicesVersion" - const val mapbox = - "com.mapbox.mapboxsdk:mapbox-android-sdk:$mapboxVersion" - const val mapboxNavigation = - "com.mapbox.mapboxsdk:mapbox-android-navigation:$mapboxNavigationVersion" - const val mapboxAnnotation = - "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:$mapboxAnnotationVersion" - const val multidex = - "androidx.multidex:multidex:$multidexVersion" - const val ktorClientOkHttp = - "io.ktor:ktor-client-okhttp:$ktorClientVersion" - - object Tests { - const val espressoCore = - "androidx.test.espresso:espresso-core:$espressoCoreVersion" - const val kotlinTestJUnit = - "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion" - const val testCore = - "androidx.test:core:1.3.0" - const val robolectric = - "org.robolectric:robolectric:4.3" - const val testRunner = - "androidx.test:runner:$testRunnerVersion" - const val testRules = - "androidx.test:rules:$testRunnerVersion" - const val testExtJunit = - "androidx.test.ext:junit:$testExtJunitVersion" - } - } - - object MultiPlatform { - const val kotlinSerialization = - "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion" - const val coroutines = - "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion" - const val ktorClient = - "io.ktor:ktor-client-core:$ktorClientVersion" - const val mokoResources = - "dev.icerock.moko:resources:$mokoResourcesVersion" - const val mokoParcelize = - "dev.icerock.moko:parcelize:$mokoParcelizeVersion" - const val mokoGraphics = - "dev.icerock.moko:graphics:$mokoGraphicsVersion" - const val mokoMvvm = - "dev.icerock.moko:mvvm:$mokoMvvmVersion" - const val mokoGeo = - "dev.icerock.moko:geo:$mokoGeoVersion" - val mokoPermissions = MultiPlatformLibrary( - common = "dev.icerock.moko:permissions:$mokoPermissionsVersion", - iosX64 = "dev.icerock.moko:permissions-iosx64:$mokoPermissionsVersion", - iosArm64 = "dev.icerock.moko:permissions-iosarm64:$mokoPermissionsVersion" - ) - val mokoMaps = MultiPlatformLibrary( - common = "dev.icerock.moko:maps:$mokoMapsVersion", - iosX64 = "dev.icerock.moko:maps-iosx64:$mokoMapsVersion", - iosArm64 = "dev.icerock.moko:maps-iosarm64:$mokoMapsVersion" - ) - val mokoMapsGoogle = MultiPlatformLibrary( - common = "dev.icerock.moko:maps-google:$mokoMapsVersion", - iosX64 = "dev.icerock.moko:maps-google-iosx64:$mokoMapsVersion", - iosArm64 = "dev.icerock.moko:maps-google-iosarm64:$mokoMapsVersion" - ) - val mokoMapsMapbox = MultiPlatformLibrary( - common = "dev.icerock.moko:maps-mapbox:$mokoMapsVersion", - iosX64 = "dev.icerock.moko:maps-mapbox-iosx64:$mokoMapsVersion", - iosArm64 = "dev.icerock.moko:maps-mapbox-iosarm64:$mokoMapsVersion" - ) - - object Tests { - const val kotlinTest = - "org.jetbrains.kotlin:kotlin-test-common:$kotlinVersion" - const val kotlinTestAnnotations = - "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlinVersion" - } - } - - object Ios { - const val ktorClientIos = - "io.ktor:ktor-client-ios:$ktorClientVersion" - } - - object Detekt { - const val detektFormatting = - "io.gitlab.arturbosch.detekt:detekt-formatting:$detektVersion" - } - } -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..5e113f0 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,51 @@ +[versions] +kotlinVersion = "1.5.20" +lifecycleVersion = "2.2.0" +androidAppCompatVersion = "1.2.0" +espressoCoreVersion = "3.2.0" +testRunnerVersion = "1.2.0" +testExtJunitVersion = "1.1.1" +playServicesLocationVersion = "18.0.0" +playServicesMapsVersion = "17.0.0" +googleMapsServicesVersion = "0.2.11" +mapboxVersion = "9.2.1" +mapboxNavigationVersion = "0.42.6" +mapboxAnnotationVersion = "0.9.0" +multidexVersion = "2.0.1" +kotlinxSerializationVersion = "1.2.1" +coroutinesVersion = "1.5.0-native-mt" +ktorClientVersion = "1.6.0" +mokoGraphicsVersion = "0.7.0" +mokoParcelizeVersion = "0.7.1" +mokoResourcesVersion = "0.16.1" +mokoMvvmVersion = "0.11.0" +mokoGeoVersion = "0.4.0" +mokoPermissionsVersion = "0.10.1" +mokoMapsVersion = "0.6.0" + +[libraries] +appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidAppCompatVersion" } +lifecycle = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "lifecycleVersion" } +playServicesLocation = { module = "com.google.android.gms:play-services-location", version.ref = "playServicesLocationVersion" } +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" } +mapboxAnnotation = { module = "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9", version.ref = "mapboxAnnotationVersion" } +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" } +coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutinesVersion" } +ktorClient = { module = "io.ktor:ktor-client-core", version.ref = "ktorClientVersion" } +mokoResources = { module = "dev.icerock.moko:resources", version.ref = "mokoResourcesVersion" } +mokoParcelize = { module = "dev.icerock.moko:parcelize", version.ref = "mokoParcelizeVersion" } +mokoGraphics = { module = "dev.icerock.moko:graphics", version.ref = "mokoGraphicsVersion" } +mokoMvvm = { module = "dev.icerock.moko:mvvm", version.ref = "mokoMvvmVersion" } +mokoGeo = { module = "dev.icerock.moko:geo", version.ref = "mokoGeoVersion" } +mokoPermissions = { module = "dev.icerock.moko:permissions", version.ref = "mokoPermissionsVersion" } +mokoMaps = { module = "dev.icerock.moko:maps", version.ref = "mokoMapsVersion" } +mokoMapsGoogle = { module = "dev.icerock.moko:maps-google", version.ref = "mokoMapsVersion" } +mokoMapsMapbox = { module = "dev.icerock.moko:maps-mapbox", version.ref = "mokoMapsVersion" } +kotlinTest = { module = "org.jetbrains.kotlin:kotlin-test-common", version.ref = "kotlinVersion" } +ktorClientIos = { module = "io.ktor:ktor-client-ios", version.ref = "ktorClientVersion" } + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 442d913..0f80bbf 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/maps-build-logic/build.gradle.kts b/maps-build-logic/build.gradle.kts new file mode 100644 index 0000000..84cbae3 --- /dev/null +++ b/maps-build-logic/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() + google() + + gradlePluginPortal() +} + +dependencies { + api("dev.icerock:mobile-multiplatform:0.12.0") + api("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20") + api("com.android.tools.build:gradle:4.2.1") + api("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.15.0") +} diff --git a/maps-build-logic/src/main/kotlin/android-app-convention.gradle.kts b/maps-build-logic/src/main/kotlin/android-app-convention.gradle.kts new file mode 100644 index 0000000..2859874 --- /dev/null +++ b/maps-build-logic/src/main/kotlin/android-app-convention.gradle.kts @@ -0,0 +1,32 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("com.android.application") + id("android-base-convention") + id("kotlin-android") +} + +android { + dexOptions { + javaMaxHeapSize = "2g" + } + + buildTypes { + getByName("release") { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + } + getByName("debug") { + isDebuggable = true + applicationIdSuffix = ".debug" + } + } + + packagingOptions { + exclude("META-INF/*.kotlin_module") + exclude("META-INF/AL2.0") + exclude("META-INF/LGPL2.1") + } +} diff --git a/maps-build-logic/src/main/kotlin/android-base-convention.gradle.kts b/maps-build-logic/src/main/kotlin/android-base-convention.gradle.kts new file mode 100644 index 0000000..bfd44d3 --- /dev/null +++ b/maps-build-logic/src/main/kotlin/android-base-convention.gradle.kts @@ -0,0 +1,14 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +import com.android.build.gradle.BaseExtension + +configure { + compileSdkVersion(30) + + defaultConfig { + minSdkVersion(21) + targetSdkVersion(30) + } +} diff --git a/maps-build-logic/src/main/kotlin/android-library-convention.gradle.kts b/maps-build-logic/src/main/kotlin/android-library-convention.gradle.kts new file mode 100644 index 0000000..c435401 --- /dev/null +++ b/maps-build-logic/src/main/kotlin/android-library-convention.gradle.kts @@ -0,0 +1,13 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("com.android.library") + id("kotlin-android") + id("android-base-convention") +} + +android { + sourceSets.all { java.srcDir("src/$name/kotlin") } +} diff --git a/maps-build-logic/src/main/kotlin/android-publication-convention.gradle.kts b/maps-build-logic/src/main/kotlin/android-publication-convention.gradle.kts new file mode 100644 index 0000000..b4dae9e --- /dev/null +++ b/maps-build-logic/src/main/kotlin/android-publication-convention.gradle.kts @@ -0,0 +1,15 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("publication-convention") +} + +afterEvaluate { + publishing.publications { + create("release", MavenPublication::class.java) { + from(components.getByName("release")) + } + } +} diff --git a/maps-build-logic/src/main/kotlin/detekt-convention.gradle.kts b/maps-build-logic/src/main/kotlin/detekt-convention.gradle.kts new file mode 100644 index 0000000..68343a8 --- /dev/null +++ b/maps-build-logic/src/main/kotlin/detekt-convention.gradle.kts @@ -0,0 +1,15 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("io.gitlab.arturbosch.detekt") +} + +detekt { + input.setFrom("src/commonMain/kotlin", "src/androidMain/kotlin", "src/iosMain/kotlin", "src/main/kotlin") +} + +dependencies { + "detektPlugins"("io.gitlab.arturbosch.detekt:detekt-formatting:1.15.0") +} diff --git a/maps-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts b/maps-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts new file mode 100644 index 0000000..a1a2691 --- /dev/null +++ b/maps-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts @@ -0,0 +1,16 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("org.gradle.maven-publish") +} + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} + +publishing.publications.withType { + // Stub javadoc.jar artifact + artifact(javadocJar.get()) +} diff --git a/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts b/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts new file mode 100644 index 0000000..349f8ed --- /dev/null +++ b/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts @@ -0,0 +1,31 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("com.android.library") + id("org.jetbrains.kotlin.multiplatform") + id("android-base-convention") + id("dev.icerock.mobile.multiplatform.android-manifest") +} + +kotlin { + ios() + android { + publishLibraryVariants("release", "debug") + } + sourceSets { + val mobileDeviceTest by creating + + val commonTest by getting + val iosTest by getting + val androidAndroidTest by getting + + + mobileDeviceTest.dependsOn(commonTest) + iosTest.dependsOn(mobileDeviceTest) + androidAndroidTest.dependsOn(mobileDeviceTest) + + } +} + diff --git a/maps-build-logic/src/main/kotlin/publication-convention.gradle.kts b/maps-build-logic/src/main/kotlin/publication-convention.gradle.kts new file mode 100644 index 0000000..46eeeca --- /dev/null +++ b/maps-build-logic/src/main/kotlin/publication-convention.gradle.kts @@ -0,0 +1,75 @@ +/* + * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. + */ + +import java.util.Base64 + +plugins { + id("javadoc-stub-convention") + id("org.gradle.maven-publish") + id("signing") +} + +publishing { + repositories.maven("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") { + name = "OSSRH" + + credentials { + username = System.getenv("OSSRH_USER") + password = System.getenv("OSSRH_KEY") + } + } + + publications.withType { + // Provide artifacts information requited by Maven Central + pom { + name.set("MOKO maps") + description.set("Control your map from common code for mobile (android & ios) Kotlin Multiplatform development") + url.set("https://github.com/icerockdev/moko-maps") + licenses { + license { + name.set("Apache-2.0") + distribution.set("repo") + url.set("https://github.com/icerockdev/moko-maps/blob/master/LICENSE.md") + } + } + + developers { + developer { + id.set("Alex009") + name.set("Aleksey Mikhailov") + email.set("aleksey.mikhailov@icerockdev.com") + } + developer { + id.set("prokopishin") + name.set("Nikita Prokopishin") + email.set("nprokopishin@icerockdev.com") + } + developer { + id.set("Dorofeev") + name.set("Andrey Dorofeev") + email.set("adorofeev@icerockdev.com") + } + } + + scm { + connection.set("scm:git:ssh://github.com/icerockdev/moko-maps.git") + developerConnection.set("scm:git:ssh://github.com/icerockdev/moko-maps.git") + url.set("https://github.com/icerockdev/moko-maps") + } + } + } +} + + +signing { + val signingKeyId: String? = System.getenv("SIGNING_KEY_ID") + val signingPassword: String? = System.getenv("SIGNING_PASSWORD") + val signingKey: String? = System.getenv("SIGNING_KEY")?.let { base64Key -> + String(Base64.getDecoder().decode(base64Key)) + } + if (signingKeyId != null) { + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) + sign(publishing.publications) + } +} diff --git a/maps-google/build.gradle.kts b/maps-google/build.gradle.kts index f18506e..281cfaf 100644 --- a/maps-google/build.gradle.kts +++ b/maps-google/build.gradle.kts @@ -3,32 +3,32 @@ */ plugins { - plugin(Deps.Plugins.androidLibrary) - plugin(Deps.Plugins.kotlinMultiplatform) - plugin(Deps.Plugins.kotlinKapt) - plugin(Deps.Plugins.kotlinAndroidExtensions) - plugin(Deps.Plugins.kotlinSerialization) - plugin(Deps.Plugins.mobileMultiplatform) - plugin(Deps.Plugins.mavenPublish) + id("multiplatform-library-convention") + id("dev.icerock.mobile.multiplatform.android-manifest") + id("publication-convention") + id("kotlin-parcelize") + id("kotlin-kapt") + id("kotlinx-serialization") + id("dev.icerock.mobile.multiplatform.cocoapods") } dependencies { - commonMainImplementation(Deps.Libs.MultiPlatform.coroutines) - commonMainImplementation(Deps.Libs.MultiPlatform.ktorClient) - commonMainImplementation(Deps.Libs.MultiPlatform.kotlinSerialization) + commonMainImplementation(libs.coroutines) + commonMainImplementation(libs.ktorClient) + commonMainImplementation(libs.kotlinSerialization) - commonMainApi(project(":maps")) - commonMainApi(Deps.Libs.MultiPlatform.mokoGeo) - commonMainApi(Deps.Libs.MultiPlatform.mokoGraphics) + commonMainApi(projects.maps) + commonMainApi(libs.mokoGeo) + commonMainApi(libs.mokoGraphics) - androidMainImplementation(Deps.Libs.Android.appCompat) - androidMainImplementation(Deps.Libs.Android.lifecycle) - androidMainImplementation(Deps.Libs.Android.playServicesLocation) - androidMainImplementation(Deps.Libs.Android.playServicesMaps) - androidMainImplementation(Deps.Libs.Android.googleMapsServices) - androidMainImplementation(Deps.Libs.Android.ktorClientOkHttp) + "androidMainImplementation"(libs.appCompat) + "androidMainImplementation"(libs.lifecycle) + "androidMainImplementation"(libs.playServicesLocation) + "androidMainImplementation"(libs.playServicesMaps) + "androidMainImplementation"(libs.googleMapsServices) + "androidMainImplementation"(libs.ktorClientOkHttp) - iosMainImplementation(Deps.Libs.Ios.ktorClientIos) + iosMainImplementation(libs.ktorClientIos) } cocoaPods { diff --git a/maps-mapbox/build.gradle.kts b/maps-mapbox/build.gradle.kts index 5b89874..4044fac 100644 --- a/maps-mapbox/build.gradle.kts +++ b/maps-mapbox/build.gradle.kts @@ -3,24 +3,24 @@ */ plugins { - plugin(Deps.Plugins.androidLibrary) - plugin(Deps.Plugins.kotlinMultiplatform) - plugin(Deps.Plugins.kotlinAndroidExtensions) - plugin(Deps.Plugins.mobileMultiplatform) - plugin(Deps.Plugins.mavenPublish) + id("multiplatform-library-convention") + id("dev.icerock.mobile.multiplatform.android-manifest") + id("publication-convention") + id("kotlin-parcelize") + id("dev.icerock.mobile.multiplatform.cocoapods") } dependencies { - commonMainImplementation(Deps.Libs.MultiPlatform.coroutines) + commonMainImplementation(libs.coroutines) - commonMainApi(project(":maps")) + commonMainApi(projects.maps) - androidMainImplementation(Deps.Libs.Android.appCompat) - androidMainImplementation(Deps.Libs.Android.lifecycle) - androidMainImplementation(Deps.Libs.Android.playServicesLocation) - androidMainImplementation(Deps.Libs.Android.mapbox) - androidMainImplementation(Deps.Libs.Android.mapboxAnnotation) - androidMainImplementation(Deps.Libs.Android.mapboxNavigation) + "androidMainImplementation"(libs.appCompat) + "androidMainImplementation"(libs.lifecycle) + "androidMainImplementation"(libs.playServicesLocation) + "androidMainImplementation"(libs.mapbox) + "androidMainImplementation"(libs.mapboxAnnotation) + "androidMainImplementation"(libs.mapboxNavigation) } cocoaPods { diff --git a/maps/build.gradle.kts b/maps/build.gradle.kts index 69da000..3e12ebf 100644 --- a/maps/build.gradle.kts +++ b/maps/build.gradle.kts @@ -3,23 +3,20 @@ */ plugins { - plugin(Deps.Plugins.androidLibrary) - plugin(Deps.Plugins.kotlinMultiplatform) - plugin(Deps.Plugins.kotlinKapt) - plugin(Deps.Plugins.kotlinAndroidExtensions) - plugin(Deps.Plugins.mobileMultiplatform) - plugin(Deps.Plugins.mavenPublish) + id("multiplatform-library-convention") + id("dev.icerock.mobile.multiplatform.android-manifest") + id("publication-convention") + id("kotlin-kapt") + id("kotlin-parcelize") } dependencies { - commonMainImplementation(Deps.Libs.MultiPlatform.coroutines) { - isForce = true - } + commonMainImplementation(libs.coroutines) - commonMainApi(Deps.Libs.MultiPlatform.mokoResources) - commonMainApi(Deps.Libs.MultiPlatform.mokoGeo) - commonMainApi(Deps.Libs.MultiPlatform.mokoGraphics) - commonMainApi(Deps.Libs.MultiPlatform.mokoParcelize) + commonMainApi(libs.mokoResources) + commonMainApi(libs.mokoGeo) + commonMainApi(libs.mokoGraphics) + commonMainApi(libs.mokoParcelize) - commonMainImplementation(Deps.Libs.MultiPlatform.mokoPermissions.common) + commonMainImplementation(libs.mokoPermissions) } diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts index 5cdb04f..6d80cb9 100644 --- a/sample/android-app/build.gradle.kts +++ b/sample/android-app/build.gradle.kts @@ -1,57 +1,31 @@ plugins { - plugin(Deps.Plugins.androidApplication) - plugin(Deps.Plugins.kotlinAndroid) - plugin(Deps.Plugins.kotlinKapt) + id("android-app-convention") + id("kotlin-android") + id("kotlin-kapt") } android { - compileSdkVersion(Deps.Android.compileSdk) - buildFeatures.dataBinding = true - dexOptions { - javaMaxHeapSize = "2g" - } - defaultConfig { - minSdkVersion(Deps.Android.minSdk) - targetSdkVersion(Deps.Android.targetSdk) - applicationId = "dev.icerock.moko.samples.maps" versionCode = 1 versionName = "0.1.0" - vectorDrawables.useSupportLibrary = true - multiDexEnabled = true } - - buildTypes { - getByName("release") { - isMinifyEnabled = false - proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") - } - getByName("debug") { - isDebuggable = true - applicationIdSuffix = ".debug" - } - } - - packagingOptions { - exclude("META-INF/*.kotlin_module") - } } dependencies { - implementation(Deps.Libs.Android.appCompat) - implementation(Deps.Libs.Android.playServicesLocation) - implementation(Deps.Libs.Android.playServicesMaps) - implementation(Deps.Libs.Android.googleMapsServices) - implementation(Deps.Libs.Android.mapbox) - implementation(Deps.Libs.Android.mapboxAnnotation) + implementation(libs.appCompat) + implementation(libs.playServicesLocation) + implementation(libs.playServicesMaps) + implementation(libs.googleMapsServices) + implementation(libs.mapbox) + implementation(libs.mapboxAnnotation) - implementation(Deps.Libs.Android.multidex) + implementation(libs.multidex) - implementation(project(":sample:mpp-library")) + implementation(projects.sample.mppLibrary) } diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts deleted file mode 100644 index 33ed62b..0000000 --- a/sample/build.gradle.kts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -subprojects { - configurations.all { - resolutionStrategy.dependencySubstitution { - listOf( - Deps.Libs.MultiPlatform.mokoMaps to ":maps", - Deps.Libs.MultiPlatform.mokoMapsGoogle to ":maps-google", - Deps.Libs.MultiPlatform.mokoMapsMapbox to ":maps-mapbox" - ).flatMap { (mpl, project) -> - listOfNotNull( - mpl.common, - mpl.iosX64, - mpl.iosArm64 - ).map { it to project } - }.forEach { (moduleSpec, projectSpec) -> - substitute(module(moduleSpec)) - .with(project(projectSpec)) - } - } - } -} diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts index b7a10a7..3deb0b0 100644 --- a/sample/mpp-library/build.gradle.kts +++ b/sample/mpp-library/build.gradle.kts @@ -1,35 +1,36 @@ plugins { - plugin(Deps.Plugins.androidLibrary) - plugin(Deps.Plugins.kotlinMultiplatform) - plugin(Deps.Plugins.mobileMultiplatform) - plugin(Deps.Plugins.mokoResources) - plugin(Deps.Plugins.iosFramework) + id("com.android.library") + id("android-base-convention") + id("detekt-convention") + id("org.jetbrains.kotlin.multiplatform") + id("dev.icerock.mobile.multiplatform.android-manifest") + id("dev.icerock.mobile.multiplatform.ios-framework") + id("dev.icerock.mobile.multiplatform-resources") + id("dev.icerock.mobile.multiplatform.cocoapods") } dependencies { - commonMainImplementation(Deps.Libs.MultiPlatform.coroutines) - - commonMainApi(Deps.Libs.MultiPlatform.mokoGeo) - commonMainApi(Deps.Libs.MultiPlatform.mokoMvvm) - commonMainApi(Deps.Libs.MultiPlatform.mokoPermissions.common) - commonMainApi(Deps.Libs.MultiPlatform.mokoMaps.common) - commonMainApi(Deps.Libs.MultiPlatform.mokoMapsGoogle.common) - commonMainApi(Deps.Libs.MultiPlatform.mokoMapsMapbox.common) - - androidMainImplementation(Deps.Libs.Android.lifecycle) - androidMainImplementation(Deps.Libs.Android.playServicesLocation) - androidMainImplementation(Deps.Libs.Android.mapbox) + commonMainImplementation(libs.coroutines) + commonMainApi(libs.mokoGeo) + commonMainApi(libs.mokoMvvm) + commonMainApi(libs.mokoPermissions) + commonMainApi(projects.maps) + commonMainApi(projects.mapsGoogle) + commonMainApi(projects.mapsMapbox) + "androidMainImplementation"(libs.lifecycle) + "androidMainImplementation"(libs.playServicesLocation) + "androidMainImplementation"(libs.mapbox) } -multiplatformResources { +libs { multiplatformResourcesPackage = "com.icerockdev.library" } framework { - export(Deps.Libs.MultiPlatform.mokoPermissions) - export(Deps.Libs.MultiPlatform.mokoMaps) - export(Deps.Libs.MultiPlatform.mokoMapsGoogle) - export(Deps.Libs.MultiPlatform.mokoMapsMapbox) + export(libs.mokoPermissions) + export(libs.mokoMaps) + export(libs.mokoMapsGoogle) + export(libs.mokoMapsMapbox) } cocoaPods { diff --git a/settings.gradle.kts b/settings.gradle.kts index ab14bd6..101d4a1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,6 +2,31 @@ * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. */ +enableFeaturePreview("VERSION_CATALOGS") +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + +dependencyResolutionManagement { + repositories { + mavenCentral() + google() + + maven { url = uri("https://mapbox.bintray.com/mapbox") } + + jcenter { + content { + includeGroup("org.jetbrains.kotlinx") + } + } + } +} + +includeBuild("maps-build-logic") + +include(":javascript") +include(":sample:android-app") +include(":sample:mpp-library") + + include(":maps") include(":maps-google") include(":maps-mapbox") From a4b235682703f0179675d96ea99be2662fdc9a16 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 5 Jul 2021 11:10:38 +0700 Subject: [PATCH 02/22] #58 remove unused and fixes --- maps-google/build.gradle.kts | 2 +- sample/mpp-library/build.gradle.kts | 14 ++++++++++---- settings.gradle.kts | 5 ----- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/maps-google/build.gradle.kts b/maps-google/build.gradle.kts index 281cfaf..f7bf144 100644 --- a/maps-google/build.gradle.kts +++ b/maps-google/build.gradle.kts @@ -28,7 +28,7 @@ dependencies { "androidMainImplementation"(libs.googleMapsServices) "androidMainImplementation"(libs.ktorClientOkHttp) - iosMainImplementation(libs.ktorClientIos) + "iosMainImplementation"(libs.ktorClientIos) } cocoaPods { diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts index 3deb0b0..7514743 100644 --- a/sample/mpp-library/build.gradle.kts +++ b/sample/mpp-library/build.gradle.kts @@ -9,8 +9,14 @@ plugins { id("dev.icerock.mobile.multiplatform.cocoapods") } +kotlin{ + android() + ios() +} + dependencies { commonMainImplementation(libs.coroutines) + commonMainImplementation(libs.mokoResources) commonMainApi(libs.mokoGeo) commonMainApi(libs.mokoMvvm) commonMainApi(libs.mokoPermissions) @@ -22,15 +28,15 @@ dependencies { "androidMainImplementation"(libs.mapbox) } -libs { +multiplatformResources { multiplatformResourcesPackage = "com.icerockdev.library" } framework { export(libs.mokoPermissions) - export(libs.mokoMaps) - export(libs.mokoMapsGoogle) - export(libs.mokoMapsMapbox) + export(projects.maps) + export(projects.mapsGoogle) + export(projects.mapsMapbox) } cocoaPods { diff --git a/settings.gradle.kts b/settings.gradle.kts index 101d4a1..e58fb09 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -22,11 +22,6 @@ dependencyResolutionManagement { includeBuild("maps-build-logic") -include(":javascript") -include(":sample:android-app") -include(":sample:mpp-library") - - include(":maps") include(":maps-google") include(":maps-mapbox") From 72d138f35d3ce135d57b133c41809e3c3b768f69 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Tue, 6 Jul 2021 12:42:15 +0700 Subject: [PATCH 03/22] #58 fix error in CI, didn't finish with error when it was --- .github/workflows/compilation-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 734906a..0123da5 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -23,4 +23,4 @@ jobs: - name: Install pods with kotlin run: cd sample/ios-app && pod install - name: build ios sample - run: cd sample/ios-app && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug -sdk iphonesimulator -arch x86_64 build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO | xcpretty + run: cd sample/ios-app && set -o pipefail && xcodebuild -scheme TestProj -workspace TestProj.xcworkspace -configuration Debug -sdk iphonesimulator -arch x86_64 build CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO | xcpretty From 691ffe700b55709a376ee5a6622f62feabe583bb Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Wed, 7 Jul 2021 10:31:57 +0700 Subject: [PATCH 04/22] #58 removed non used --- .../multiplatform-library-convention.gradle.kts | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts b/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts index 349f8ed..347106b 100644 --- a/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts +++ b/maps-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts @@ -14,18 +14,5 @@ kotlin { android { publishLibraryVariants("release", "debug") } - sourceSets { - val mobileDeviceTest by creating - - val commonTest by getting - val iosTest by getting - val androidAndroidTest by getting - - - mobileDeviceTest.dependsOn(commonTest) - iosTest.dependsOn(mobileDeviceTest) - androidAndroidTest.dependsOn(mobileDeviceTest) - - } } From b27aae2e98b973f503bfea170952530ce51c3560 Mon Sep 17 00:00:00 2001 From: Aleksey Mikhailov Date: Wed, 7 Jul 2021 23:10:18 +0700 Subject: [PATCH 05/22] #58 setup new mapbox repo --- gradle/libs.versions.toml | 8 +++----- maps-google/build.gradle.kts | 4 ++-- maps-mapbox/build.gradle.kts | 5 ++--- sample/android-app/build.gradle.kts | 1 - sample/mpp-library/build.gradle.kts | 2 -- settings.gradle.kts | 15 ++++++++++++++- 6 files changed, 21 insertions(+), 14 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5e113f0..a6a05b0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,9 +8,8 @@ testExtJunitVersion = "1.1.1" playServicesLocationVersion = "18.0.0" playServicesMapsVersion = "17.0.0" googleMapsServicesVersion = "0.2.11" -mapboxVersion = "9.2.1" -mapboxNavigationVersion = "0.42.6" -mapboxAnnotationVersion = "0.9.0" +mapboxVersion = "9.6.1" +mapboxNavigationVersion = "1.5.1" multidexVersion = "2.0.1" kotlinxSerializationVersion = "1.2.1" coroutinesVersion = "1.5.0-native-mt" @@ -30,8 +29,7 @@ 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" } -mapboxAnnotation = { module = "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9", version.ref = "mapboxAnnotationVersion" } +mapboxNavigation = { module = "com.mapbox.navigation:core", version.ref = "mapboxNavigationVersion" } 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..a7080e6 100644 --- a/maps-mapbox/build.gradle.kts +++ b/maps-mapbox/build.gradle.kts @@ -18,9 +18,8 @@ dependencies { "androidMainImplementation"(libs.appCompat) "androidMainImplementation"(libs.lifecycle) "androidMainImplementation"(libs.playServicesLocation) - "androidMainImplementation"(libs.mapbox) - "androidMainImplementation"(libs.mapboxAnnotation) - "androidMainImplementation"(libs.mapboxNavigation) + "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..92b58f2 100644 --- a/sample/android-app/build.gradle.kts +++ b/sample/android-app/build.gradle.kts @@ -23,7 +23,6 @@ dependencies { implementation(libs.playServicesMaps) implementation(libs.googleMapsServices) implementation(libs.mapbox) - implementation(libs.mapboxAnnotation) implementation(libs.multidex) 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 { From f2554d554009d5f7e2ad7bd38964537cfb71ccc9 Mon Sep 17 00:00:00 2001 From: Aleksey Mikhailov Date: Wed, 7 Jul 2021 23:21:11 +0700 Subject: [PATCH 06/22] #58 control tokens for android by gradle properties --- sample/android-app/build.gradle.kts | 7 +++++++ sample/android-app/src/main/AndroidManifest.xml | 3 +-- .../src/main/java/com/icerockdev/app/GoogleMapsActivity.kt | 3 +-- .../src/main/java/com/icerockdev/app/MapboxActivity.kt | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts index 92b58f2..01c3d1b 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 = (extra["googleMaps.apiKey"] as? String).orEmpty() + val mapboxPublicToken: String = (extra["mapbox.publicToken"] as? String).orEmpty() + + manifestPlaceholders["googleMapsApiKey"] = googleMapsApiKey + buildConfigField("String", "GOOGLE_MAPS_API_KEY", "\"$googleMapsApiKey\"") + buildConfigField("String", "MAPBOX_PUBLIC_TOKEN", "\"$mapboxPublicToken\"") } } 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 { From 4f106fc605574d63836a0a0e0480e33d8b417729 Mon Sep 17 00:00:00 2001 From: Aleksey Mikhailov Date: Wed, 7 Jul 2021 23:23:49 +0700 Subject: [PATCH 07/22] #58 setup guide --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 24ab74b..922e375 100755 --- a/README.md +++ b/README.md @@ -170,7 +170,17 @@ 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=sk.eyJ1IjoiYWxleDAwOSIsImEiOiJja3F0MWdhMGowM2xqMnBvMmpjcmtpbXNmIn0.6rIx2ngQDSdu9j3GD85VBQ +mapbox.publicToken=pk.eyJ1IjoiYWxleDAwOSIsImEiOiJja2Y2aWp3Zjkwc3pxMnpxZG5wazlhcDU1In0.9PgTtFcznGfPnfbE3aD6_Q + +# google maps api key by guide https://developers.google.com/maps/documentation/android-sdk/get-api-key +googleMaps.apiKey=AIzaSyBCEIXZSuTHvlQXRlCKBJ5JwnIIdzLV0uE +``` + - 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; From 9d3dcc3ba7794e55fe89191b2b76e962a1782af1 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Thu, 8 Jul 2021 17:06:28 +0700 Subject: [PATCH 08/22] #58 updated pods for mapbox and google Maps, changed readme for how to local setup --- README.md | 18 +++++++++++++++--- build.gradle.kts | 1 + gradle/libs.versions.toml | 4 ++++ maps-mapbox/build.gradle.kts | 2 ++ sample/ios-app/Podfile | 6 +++--- .../ios-app/TestProj.xcodeproj/project.pbxproj | 2 ++ sample/ios-app/src/AppDelegate.swift | 2 +- .../ios-app/src/GoogleMapViewController.swift | 2 +- sample/ios-app/src/Info.plist | 4 +++- 9 files changed, 32 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 922e375..0b1aa90 100755 --- a/README.md +++ b/README.md @@ -174,11 +174,23 @@ Please see more examples in the [sample directory](sample). Before open project need to setup `gradle.properties` with tokens: ``` # mapbox tokens by guide https://docs.mapbox.com/android/maps/guides/install/ -mapbox.secretToken=sk.eyJ1IjoiYWxleDAwOSIsImEiOiJja3F0MWdhMGowM2xqMnBvMmpjcmtpbXNmIn0.6rIx2ngQDSdu9j3GD85VBQ -mapbox.publicToken=pk.eyJ1IjoiYWxleDAwOSIsImEiOiJja2Y2aWp3Zjkwc3pxMnpxZG5wazlhcDU1In0.9PgTtFcznGfPnfbE3aD6_Q +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=AIzaSyBCEIXZSuTHvlQXRlCKBJ5JwnIIdzLV0uE +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; diff --git a/build.gradle.kts b/build.gradle.kts index b663b04..45c93c3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,6 +13,7 @@ buildscript { classpath(":maps-build-logic") classpath("dev.icerock.moko:resources-generator:0.16.1") classpath("org.jetbrains.kotlin:kotlin-serialization:1.5.20") + classpath("com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.9.0") } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a6a05b0..310b673 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,6 +10,8 @@ playServicesMapsVersion = "17.0.0" googleMapsServicesVersion = "0.2.11" 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,6 +32,8 @@ playServicesMaps = { module = "com.google.android.gms:play-services-maps", versi 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.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-mapbox/build.gradle.kts b/maps-mapbox/build.gradle.kts index a7080e6..92242b6 100644 --- a/maps-mapbox/build.gradle.kts +++ b/maps-mapbox/build.gradle.kts @@ -18,6 +18,8 @@ dependencies { "androidMainImplementation"(libs.appCompat) "androidMainImplementation"(libs.lifecycle) "androidMainImplementation"(libs.playServicesLocation) + "androidMainImplementation"(libs.mapboxAnnotation) + "androidMainImplementation"(libs.mapboxServices) "androidMainApi"(libs.mapbox) "androidMainApi"(libs.mapboxNavigation) } 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..bcdb19b 100755 --- a/sample/ios-app/src/AppDelegate.swift +++ b/sample/ios-app/src/AppDelegate.swift @@ -13,7 +13,7 @@ class AppDelegate: NSObject, UIApplicationDelegate { 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..cf8404b 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 From 5f2a11200332dfdbbe1a2e08ef36fe074138784c Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 10:52:51 +0700 Subject: [PATCH 09/22] #58 updated CI pod-install action and removed useless --- .github/workflows/compilation-check.yml | 6 +++++- .github/workflows/publish.yml | 8 ++++++-- build.gradle.kts | 1 - sample/ios-app/src/AppDelegate.swift | 1 - sample/ios-app/src/Info.plist | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 0123da5..a157cee 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -17,7 +17,11 @@ jobs: with: java-version: 11 - name: Cocoapods install - run: (cd sample/ios-app && pod install) + run: export ORIGINAL_HOME=$HOME && \ + export HOME=$(pwd) && \ + echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && \ + (cd sample/ios-app && pod install) && \ + export HOME=$ORIGINAL_HOME - name: Check library run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 - name: Install pods with kotlin diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 28e15bb..3ecac3d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ 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 }} steps: - uses: actions/checkout@v1 - name: Set up JDK 11 @@ -26,7 +26,11 @@ jobs: with: java-version: 11 - name: Cocoapods install - run: (cd sample/ios-app && pod install) + run: export ORIGINAL_HOME=$HOME && \ + export HOME=$(pwd) && \ + echo "machine api.mapbox.com\nlogin mapbox\npassword sk.eyJ1IjoiYWxleDAwOSIsImEiOiJja3F1ZmJiNmkwNDBjMnFvNmUxZWZqanVsIn0.MUWcRtm5qbEn5NGsnpdlug" > ~/.netrc && \ + (cd sample/ios-app && pod install) && \ + export HOME=$ORIGINAL_HOME - name: Publish library run: ./gradlew publish release: diff --git a/build.gradle.kts b/build.gradle.kts index 45c93c3..b663b04 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,7 +13,6 @@ buildscript { classpath(":maps-build-logic") classpath("dev.icerock.moko:resources-generator:0.16.1") classpath("org.jetbrains.kotlin:kotlin-serialization:1.5.20") - classpath("com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.9.0") } } diff --git a/sample/ios-app/src/AppDelegate.swift b/sample/ios-app/src/AppDelegate.swift index bcdb19b..4cbbb7c 100755 --- a/sample/ios-app/src/AppDelegate.swift +++ b/sample/ios-app/src/AppDelegate.swift @@ -12,7 +12,6 @@ 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(Bundle.main.object(forInfoDictionaryKey: "GoogleAPIkey") as! String) // For Mapbox add key "MGLMapboxAccessToken" in Info.plist diff --git a/sample/ios-app/src/Info.plist b/sample/ios-app/src/Info.plist index cf8404b..fffcf9c 100755 --- a/sample/ios-app/src/Info.plist +++ b/sample/ios-app/src/Info.plist @@ -63,7 +63,7 @@ MGLMapboxAccessToken YOUR_PUBLIC_MAPBOX_KEY GoogleAPIkey - YOUR-API-KEY + YOUR_API_KEY MGLMapboxMetricsEnabledSettingShownInApp From d5c825d3344181499177e604016e39e734565e91 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 11:49:51 +0700 Subject: [PATCH 10/22] #58 CI pod-install action fixes --- .github/workflows/compilation-check.yml | 8 ++++---- .github/workflows/publish.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index a157cee..711e5c3 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -18,10 +18,10 @@ jobs: java-version: 11 - name: Cocoapods install run: export ORIGINAL_HOME=$HOME && \ - export HOME=$(pwd) && \ - echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && \ - (cd sample/ios-app && pod install) && \ - export HOME=$ORIGINAL_HOME + export HOME=$(pwd) && \ + echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && \ + (cd sample/ios-app && pod install) && \ + export HOME=$ORIGINAL_HOME - name: Check library run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 - name: Install pods with kotlin diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3ecac3d..1000b98 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -27,10 +27,10 @@ jobs: java-version: 11 - name: Cocoapods install run: export ORIGINAL_HOME=$HOME && \ - export HOME=$(pwd) && \ - echo "machine api.mapbox.com\nlogin mapbox\npassword sk.eyJ1IjoiYWxleDAwOSIsImEiOiJja3F1ZmJiNmkwNDBjMnFvNmUxZWZqanVsIn0.MUWcRtm5qbEn5NGsnpdlug" > ~/.netrc && \ - (cd sample/ios-app && pod install) && \ - export HOME=$ORIGINAL_HOME + export HOME=$(pwd) && \ + echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && \ + (cd sample/ios-app && pod install) && \ + export HOME=$ORIGINAL_HOME - name: Publish library run: ./gradlew publish release: From 599a872c7d372ccd09d64aa338f1e7192f15778b Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 11:52:51 +0700 Subject: [PATCH 11/22] #58 CI fixes --- .github/workflows/compilation-check.yml | 6 +----- .github/workflows/publish.yml | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 711e5c3..4c58886 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -17,11 +17,7 @@ jobs: with: java-version: 11 - name: Cocoapods install - run: export ORIGINAL_HOME=$HOME && \ - export HOME=$(pwd) && \ - echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && \ - (cd sample/ios-app && pod install) && \ - export HOME=$ORIGINAL_HOME + run: export ORIGINAL_HOME=$HOME && export HOME=$(pwd) && echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && (cd sample/ios-app && pod install) && export HOME=$ORIGINAL_HOME - name: Check library run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 - name: Install pods with kotlin diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1000b98..b0e6b4f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,11 +26,7 @@ jobs: with: java-version: 11 - name: Cocoapods install - run: export ORIGINAL_HOME=$HOME && \ - export HOME=$(pwd) && \ - echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && \ - (cd sample/ios-app && pod install) && \ - export HOME=$ORIGINAL_HOME + run: export ORIGINAL_HOME=$HOME && export HOME=$(pwd) && echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && (cd sample/ios-app && pod install) && export HOME=$ORIGINAL_HOME - name: Publish library run: ./gradlew publish release: From f9eda39d14437e3a53f3384f3c97e41897f0cd47 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 12:17:11 +0700 Subject: [PATCH 12/22] #58 added env variable to compitation-check --- .github/workflows/compilation-check.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 4c58886..6da56bb 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -9,7 +9,8 @@ on: jobs: build: runs-on: macOS-latest - + env: + MAPBOX_SECRET_TOKEN: ${{ secrets.MAPBOX_SECRET_TOKEN }} steps: - uses: actions/checkout@v1 - name: Set up JDK 11 From 6aa28598d5c4347b1772692d15106428971e8243 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 16:02:49 +0700 Subject: [PATCH 13/22] #58 added phase to ci for configure netrc file --- .github/workflows/compilation-check.yml | 8 +++++++- .github/workflows/publish.yml | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 6da56bb..688b624 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -17,8 +17,14 @@ jobs: 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: export ORIGINAL_HOME=$HOME && export HOME=$(pwd) && echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && (cd sample/ios-app && pod install) && export HOME=$ORIGINAL_HOME + run: (cd sample/ios-app && pod install) - name: Check library run: ./gradlew build publishToMavenLocal syncMultiPlatformLibraryDebugFrameworkIosX64 - name: Install pods with kotlin diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b0e6b4f..541a94c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,8 +25,14 @@ jobs: 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: export ORIGINAL_HOME=$HOME && export HOME=$(pwd) && echo "machine api.mapbox.com\nlogin mapbox\npassword $MAPBOX_SECRET_TOKEN" > ~/.netrc && (cd sample/ios-app && pod install) && export HOME=$ORIGINAL_HOME + run: (cd sample/ios-app && pod install) - name: Publish library run: ./gradlew publish release: From 7764e5f703348c476cd0ee94139215b1d37f6ffe Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 16:07:01 +0700 Subject: [PATCH 14/22] #58 fixes --- .github/workflows/compilation-check.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 688b624..8581480 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -18,7 +18,7 @@ jobs: with: java-version: 11 - name: Set up .netrc - uses: extractions/netrc@v1 + - uses: extractions/netrc@v1 with: machine: api.mapbox.com username: mapbox diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 541a94c..2b5ed71 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,7 +26,7 @@ jobs: with: java-version: 11 - name: Set up .netrc - uses: extractions/netrc@v1 + - uses: extractions/netrc@v1 with: machine: api.mapbox.com username: mapbox From 87a45662a907a6fa13f5f76566d2b88ac9acd4a1 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 16:10:14 +0700 Subject: [PATCH 15/22] #58 fixed netrc setup on ci --- .github/workflows/compilation-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 8581480..f9c8c00 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -17,8 +17,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 11 - - name: Set up .netrc - uses: extractions/netrc@v1 + - name: Set up .netrc with: machine: api.mapbox.com username: mapbox From e275d9a8168ed40b2e3ba72bcfa618a8a56006bf Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 16:11:24 +0700 Subject: [PATCH 16/22] #58 fixed netrc setup on ci --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2b5ed71..55a55a2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,8 +25,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 11 - - name: Set up .netrc - uses: extractions/netrc@v1 + - name: Set up .netrc with: machine: api.mapbox.com username: mapbox From 9f16c793dd6aa97ca196de707531152211b91cc8 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 16:17:21 +0700 Subject: [PATCH 17/22] #58 test --- .github/workflows/compilation-check.yml | 4 ++-- .github/workflows/publish.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index f9c8c00..e739bc5 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -17,8 +17,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 11 - - uses: extractions/netrc@v1 - - name: Set up .netrc + - name: Set up netrc + uses: extractions/netrc@v1 with: machine: api.mapbox.com username: mapbox diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 55a55a2..29f29db 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,8 +25,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 11 - - uses: extractions/netrc@v1 - - name: Set up .netrc + - name: Set up netrc + uses: extractions/netrc@v1 with: machine: api.mapbox.com username: mapbox From ec8f90f8b4176e96ae6d3cd8988ae646f0d7083d Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Mon, 12 Jul 2021 17:50:12 +0700 Subject: [PATCH 18/22] #58 fixes get mapbox token --- .github/workflows/compilation-check.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index e739bc5..8765643 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -22,7 +22,7 @@ jobs: with: machine: api.mapbox.com username: mapbox - password: ${{ secrets.MAPBOX_SECRET_TOKEN }} + password: ${{ 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 29f29db..4230448 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,7 +30,7 @@ jobs: with: machine: api.mapbox.com username: mapbox - password: ${{ secrets.MAPBOX_SECRET_TOKEN }} + password: ${{ MAPBOX_SECRET_TOKEN }} - name: Cocoapods install run: (cd sample/ios-app && pod install) - name: Publish library From 55f3cc1ebe93e69cfbeabf5fb91d8f876042be72 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Tue, 13 Jul 2021 13:09:55 +0700 Subject: [PATCH 19/22] #58 use repository secrets to install mapbox --- .github/workflows/compilation-check.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index 8765643..e739bc5 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -22,7 +22,7 @@ jobs: with: machine: api.mapbox.com username: mapbox - password: ${{ MAPBOX_SECRET_TOKEN }} + 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 4230448..29f29db 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,7 +30,7 @@ jobs: with: machine: api.mapbox.com username: mapbox - password: ${{ MAPBOX_SECRET_TOKEN }} + password: ${{ secrets.MAPBOX_SECRET_TOKEN }} - name: Cocoapods install run: (cd sample/ios-app && pod install) - name: Publish library From 4955e00ab3cca55d58fdbf7161c03f5521cf8e0a Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Wed, 14 Jul 2021 15:12:11 +0700 Subject: [PATCH 20/22] #58 add GOOGLE_MAPS_API_KEY to buildConfig --- .github/workflows/publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 29f29db..cfada27 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,6 +19,7 @@ jobs: SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} SIGNING_KEY: ${{ secrets.GPG_KEY_CONTENTS }} MAPBOX_SECRET_TOKEN: ${{ secrets.MAPBOX_SECRET_TOKEN }} + GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }} steps: - uses: actions/checkout@v1 - name: Set up JDK 11 From 0d5d546ad05ce4cb2d623bc9f9c0c5bc7d046187 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Wed, 14 Jul 2021 15:30:16 +0700 Subject: [PATCH 21/22] #58 way to get mapbox_public_token and google_api_key from repo secrets --- .github/workflows/publish.yml | 1 + sample/android-app/build.gradle.kts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index cfada27..c294b2b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,6 +19,7 @@ jobs: 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 diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts index 01c3d1b..4241244 100644 --- a/sample/android-app/build.gradle.kts +++ b/sample/android-app/build.gradle.kts @@ -15,8 +15,8 @@ android { multiDexEnabled = true - val googleMapsApiKey: String = (extra["googleMaps.apiKey"] as? String).orEmpty() - val mapboxPublicToken: String = (extra["mapbox.publicToken"] as? String).orEmpty() + 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\"") From 10fc9e0fa11497d09f9c5d5ec034b055fddb2780 Mon Sep 17 00:00:00 2001 From: Anton Shestak Date: Wed, 14 Jul 2021 15:52:55 +0700 Subject: [PATCH 22/22] #58 added keys to CI check file --- .github/workflows/compilation-check.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/compilation-check.yml b/.github/workflows/compilation-check.yml index e739bc5..1e01ef7 100644 --- a/.github/workflows/compilation-check.yml +++ b/.github/workflows/compilation-check.yml @@ -11,6 +11,8 @@ jobs: 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