apply plugin: 'com.android.library' apply plugin: "com.jaredsburrows.license" apply plugin: 'kotlin-android' dependencies { lintChecks project(":MapboxGLAndroidSDKLint") api dependenciesList.mapboxAndroidTelemetry api dependenciesList.mapboxJavaGeoJSON api dependenciesList.mapboxAndroidGestures implementation dependenciesList.mapboxJavaTurf implementation dependenciesList.supportAppcompatV7 implementation dependenciesList.supportAnnotations implementation dependenciesList.supportFragmentV4 implementation dependenciesList.okhttp3 implementation dependenciesList.reLinker testImplementation dependenciesList.junit testImplementation dependenciesList.mockito testImplementation dependenciesList.mockk testImplementation dependenciesList.robolectric testImplementation dependenciesList.kotlinLib } android { compileSdkVersion androidVersions.compileSdkVersion // Roboelectric 4.0 required config // http://robolectric.org/migrating/#migrating-to-40 testOptions.unitTests.includeAndroidResources = true defaultConfig { minSdkVersion androidVersions.minSdkVersion targetSdkVersion androidVersions.targetSdkVersion buildConfigField "String", "GIT_REVISION_SHORT", String.format("\"%s\"", getGitRevision()) buildConfigField "String", "MAPBOX_SDK_IDENTIFIER", String.format("\"%s\"", "mapbox-maps-android") buildConfigField "String", "MAPBOX_SDK_VERSION", String.format("\"%s\"", project.VERSION_NAME) buildConfigField "String", "MAPBOX_VERSION_STRING", String.format("\"Mapbox/%s\"", project.VERSION_NAME) buildConfigField "String", "MAPBOX_EVENTS_USER_AGENT", String.format("\"mapbox-maps-android/%s\"", project.VERSION_NAME) } defaultPublishConfig project.hasProperty("mapbox.buildtype") ? project.getProperty("mapbox.buildtype") : "debug" // We sometimes want to invoke Gradle without building a native dependency, e.g. when we just want // to invoke the Java tests. When we explicitly specify an ABI of 'none', no native dependencies are // added. When another ABI is specified explicitly, we're just going to build that ABI. In all other // cases, all ABIs are built. // // When invoking from the command line or to override the device default, set `-Pmapbox.abis=...` to // only build the desired architectures. // // When building from Android Studio, gradle.properties sets `android.buildOnlyTargetAbi=true` so that // only the architecture for the device you're running on gets built. def abi = 'all' if (!project.hasProperty('android.injected.invoked.from.ide') || project.hasProperty("mapbox.abis")) { // Errors when the user invokes Gradle from the command line and didn't set mapbox.abis abi = project.getProperty("mapbox.abis") } if (abi != 'none') { externalNativeBuild { cmake { path "../../../CMakeLists.txt" version "3.10.2" } } } // Allow determining the C++ STL we're using when building Mapbox GL. def stl = 'c++_static' if (project.hasProperty("mapbox.stl")) { stl = project.getProperty("mapbox.stl") } defaultConfig { if (abi != 'none') { externalNativeBuild { cmake { arguments "-DANDROID_TOOLCHAIN=clang" arguments "-DANDROID_STL=" + stl arguments "-DANDROID_CPP_FEATURES=rtti;exceptions" arguments "-DMBGL_PLATFORM=android" arguments "-DMASON_PLATFORM=android" arguments "-DNodeJS_EXECUTABLE=" + node arguments "-Dnpm_EXECUTABLE=" + npm // Enable ccache if the user has installed it. if (ccache?.trim()) { arguments "-DANDROID_CCACHE=" + ccache } cFlags "-Qunused-arguments" cppFlags "-Qunused-arguments" targets "mapbox-gl" if (defaultPublishConfig.equalsIgnoreCase("debug")) { targets "example-custom-layer" } if (project.hasProperty("mapbox.with_test")) { targets "mbgl-test" } if (project.hasProperty("mapbox.with_benchmark")) { targets "mbgl-benchmark" } if (abi != 'all') { abiFilters abi.split(' ') } else { abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } } } } // proguard config for .aar consumerProguardFiles 'proguard-rules.pro' } // avoid naming conflicts, force usage of prefix resourcePrefix 'mapbox_' sourceSets { // limit amount of exposed library resources main.res.srcDirs += 'src/main/res-public' } lintOptions { disable 'MissingTranslation', 'TypographyQuotes', 'ObsoleteLintCustomCheck', 'MissingPermission', 'WrongThreadInterprocedural' checkAllWarnings true warningsAsErrors false } testOptions { unitTests { returnDefaultValues true includeAndroidResources = true } } buildTypes { debug { jniDebuggable true } } } licenseReport { generateHtmlReport = false generateJsonReport = true copyHtmlReportToAssets = false copyJsonReportToAssets = false } def static getGitRevision() { def cmd = "git rev-parse --short HEAD" def proc = cmd.execute() def ref = proc.text.trim() return ref } configurations { all*.exclude group: 'commons-logging', module: 'commons-logging' all*.exclude group: 'commons-collections', module: 'commons-collections' } apply from: "${rootDir}/gradle/gradle-javadoc.gradle" apply from: "${rootDir}/gradle/gradle-checkstyle.gradle" apply from: "${rootDir}/gradle/gradle-dependencies-graph.gradle" apply from: "${rootDir}/gradle/gradle-update-vendor-modules.gradle" apply from: "${rootDir}/gradle/android-nitpick.gradle" apply from: "${rootDir}/gradle/gradle-bintray.gradle"