line / abc-kmm-location

Location Service Manager for Kotlin Multiplatform Mobile iOS and Android
Apache License 2.0
88 stars 8 forks source link
android corelocation fusedlocationapi googleservice ios kotlin-multiplatform location-service

abc-kmm-location: Location Service Manager for Kotlin Multiplatform Mobile iOS and android

Kotlin KMM AGP Gradle Platform

Location Service Manager for Kotlin Multiplatform Mobile iOS and android

Features

Usage

Register handlers for permissions

To get current location just once

To get current location whenever location changes

To stop location updating

Installation

Gradle Settings

Add below gradle settings into your KMP (Kotlin Multiplatform Project)

build.gradle.kts in shared

plugins {
    id("com.android.library")
    kotlin("multiplatform")
}

val abcLocationLib = "com.linecorp.abc:kmm-location:0.2.4"

kotlin {
    android()
    ios {
        binaries
            .filterIsInstance<Framework>()
            .forEach {
                it.baseName = "shared"
                it.transitiveExport = true
                it.export(abcLocationLib)
            }
    }

    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation(abcLocationLib)
            }
        }
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test-common"))
                implementation(kotlin("test-annotations-common"))
            }
        }
        val androidMain by getting {
            dependencies {
                implementation("com.google.android.material:material:1.2.1")
                implementation(abcLocationLib)
            }
        }
        val androidTest by getting {
            dependencies {
                implementation(kotlin("test-junit"))
                implementation("junit:junit:4.13.2")
                implementation("androidx.test:core:1.0.0")
                implementation("androidx.test:runner:1.1.0")
                implementation("org.robolectric:robolectric:4.2")
            }
        }
        val iosMain by getting {
            dependencies {
                implementation(abcLocationLib)
            }
        }
        val iosTest by getting
    }
}

Project Settings

Android

iOS

  1. Create Podfile with below setting in your project root.
    
    use_frameworks!

platform :ios, '10.0'

install! 'cocoapods', :deterministic_uuids => false

target 'iosApp' do pod 'shared', :path => '../shared/' end


2. Run command `pod install` on the terminal

## Requirements
- iOS
  - Deployment Target 10.0 or higher
- Android
  - minSdkVersion 21