Files
MapLibreParticleLab/platform/android/MapLibreAndroid/build.gradle
Adrian Cojocaru ea09bdf2b6 Add Android Vulkan backend (#2711)
Co-authored-by: Bart Louwers <bart.louwers@gmail.com>
2024-09-06 17:40:57 +03:00

187 lines
5.1 KiB
Groovy

import org.jetbrains.dokka.gradle.DokkaTask
plugins {
alias libs.plugins.kotlinter
alias libs.plugins.dokka
}
apply plugin: 'com.android.library'
apply plugin: "com.jaredsburrows.license"
apply plugin: 'kotlin-android'
apply from: "${rootDir}/gradle/native-build.gradle"
dependencies {
lintChecks project(":MapLibreAndroidLint")
api libs.maplibreJavaGeoJSON
api libs.maplibreGestures
implementation libs.maplibreJavaTurf
implementation libs.supportAnnotations
implementation libs.supportFragmentV4
implementation libs.okhttp3
implementation libs.timber
implementation libs.interpolator
testImplementation libs.junit
testImplementation libs.mockito
testImplementation libs.mockk
testImplementation libs.robolectric
testImplementation libs.commonsIO
testImplementation libs.assertjcore
androidTestImplementation libs.testRunner
androidTestImplementation libs.testRules
}
tasks.withType(DokkaTask.class) {
moduleName.set("MapLibre Native Android")
dokkaSourceSets {
configureEach {
includes.from("Module.md")
}
}
}
android {
defaultConfig {
compileSdk 34
minSdkVersion 21
targetSdkVersion 33
buildConfigField "String", "GIT_REVISION_SHORT", String.format("\"%s\"", getGitRevision())
buildConfigField "String", "GIT_REVISION", String.format("\"%s\"", getGitRevision(false))
buildConfigField "String", "MAPLIBRE_VERSION_STRING", String.format("\"MapLibre Native/%s\"", project.VERSION_NAME)
consumerProguardFiles 'proguard-rules.pro'
externalNativeBuild {
cmake {
arguments "-DMLN_LEGACY_RENDERER=ON", "-DMLN_DRAWABLE_RENDERER=OFF"
}
}
}
flavorDimensions += "renderer"
productFlavors {
create("legacy") {
dimension = "renderer"
externalNativeBuild {
cmake {
arguments "-DMLN_LEGACY_RENDERER=ON", "-DMLN_DRAWABLE_RENDERER=OFF"
}
}
}
create("drawable") {
dimension = "renderer"
externalNativeBuild {
cmake {
arguments "-DMLN_LEGACY_RENDERER=OFF", "-DMLN_DRAWABLE_RENDERER=ON"
}
}
}
create("vulkan") {
dimension = "renderer"
externalNativeBuild {
cmake {
arguments "-DMLN_LEGACY_RENDERER=OFF", "-DMLN_DRAWABLE_RENDERER=ON"
arguments "-DMLN_WITH_OPENGL=OFF", "-DMLN_WITH_VULKAN=ON"
}
}
}
}
sourceSets {
legacy {
java.srcDirs += ['src/opengl/java/']
}
drawable {
java.srcDirs += ['src/opengl/java/']
}
}
// build native libraries
List nativeTargets = ["maplibre"]
if (project.hasProperty("mapbox.with_test")) {
nativeTargets.add("mbgl-test")
}
if (project.hasProperty("mapbox.with_benchmark")) {
nativeTargets.add("mbgl-benchmark")
}
nativeBuild(nativeTargets)
// avoid naming conflicts, force usage of prefix
resourcePrefix 'maplibre_'
sourceSets {
// limit amount of exposed library resources
main.res.srcDirs += 'src/main/res-public'
}
testOptions {
unitTests {
returnDefaultValues true
// Roboelectric 4.0 required config
// http://robolectric.org/migrating/#migrating-to-40
includeAndroidResources = true
}
}
buildTypes {
debug {
testCoverageEnabled false
jniDebuggable true
debuggable true
}
}
namespace 'org.maplibre.android'
lint {
checkAllWarnings true
disable 'MissingTranslation', 'TypographyQuotes', 'ObsoleteLintCustomCheck', 'MissingPermission', 'WrongThreadInterprocedural'
warningsAsErrors false
}
buildFeatures {
buildConfig true
}
compileOptions {
sourceCompatibility = 11
targetCompatibility = 11
}
kotlinOptions {
jvmTarget = "11"
}
}
licenseReport {
generateHtmlReport = false
generateJsonReport = true
copyHtmlReportToAssets = false
copyJsonReportToAssets = false
}
def static getGitRevision(shortRev = true) {
def cmd = shortRev ? "git rev-parse --short HEAD" : "git rev-parse 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'
}
// Download validation layers from
// https://github.com/KhronosGroup/Vulkan-ValidationLayers
apply from: "${rootDir}/gradle/download-vulkan-validation.gradle"
apply from: "${rootDir}/gradle/gradle-checkstyle.gradle"
apply from: "${rootDir}/gradle/gradle-dependencies-graph.gradle"
apply from: "${rootDir}/gradle/android-nitpick.gradle"
apply from: "${rootDir}/gradle/gradle-publish.gradle"
// intentionally disabled
// apply from: "${rootDir}/gradle/jacoco-report.gradle"