diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2018-01-10 19:39:47 +0100 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2018-01-11 21:31:25 +0100 |
commit | 2b037065e3760d5d64c0c26a8c15a66707044204 (patch) | |
tree | 36f02a16cb2e40e9b06af16571f79e90a40171c4 /platform/android/gradle | |
parent | 7c0e8fd9808b36363dbdc82891cdecf6badf8318 (diff) | |
download | qtlocation-mapboxgl-2b037065e3760d5d64c0c26a8c15a66707044204.tar.gz |
[android] - move gradle files to dedicated folder
Diffstat (limited to 'platform/android/gradle')
-rw-r--r-- | platform/android/gradle/dependencies.gradle | 49 | ||||
-rw-r--r-- | platform/android/gradle/gradle-checkstyle.gradle | 24 | ||||
-rw-r--r-- | platform/android/gradle/gradle-config.gradle | 23 | ||||
-rw-r--r-- | platform/android/gradle/gradle-javadoc.gradle | 21 | ||||
-rw-r--r-- | platform/android/gradle/gradle-lint.gradle | 30 | ||||
-rw-r--r-- | platform/android/gradle/gradle-make.gradle | 18 | ||||
-rw-r--r-- | platform/android/gradle/gradle-publish.gradle | 137 | ||||
-rw-r--r-- | platform/android/gradle/gradle-tests-staticblockremover.gradle | 59 |
8 files changed, 361 insertions, 0 deletions
diff --git a/platform/android/gradle/dependencies.gradle b/platform/android/gradle/dependencies.gradle new file mode 100644 index 0000000000..a32e18166d --- /dev/null +++ b/platform/android/gradle/dependencies.gradle @@ -0,0 +1,49 @@ +ext { + minSdkVersion = 14 + targetSdkVersion = 25 + compileSdkVersion = 25 + buildToolsVersion = "26.0.3" + + versionCode = 12 + versionName = "6.0.0" + + mapboxServicesVersion = "2.2.9" + supportLibVersion = "25.4.0" + espressoVersion = '3.0.1' + testRunnerVersion = '1.0.1' + leakCanaryVersion = '1.5.1' + + dep = [ + // mapbox + mapboxJavaServices : "com.mapbox.mapboxsdk:mapbox-java-services:${mapboxServicesVersion}@jar", + mapboxJavaGeoJSON : "com.mapbox.mapboxsdk:mapbox-java-geojson:${mapboxServicesVersion}@jar", + mapboxAndroidTelemetry : "com.mapbox.mapboxsdk:mapbox-android-telemetry:${mapboxServicesVersion}@aar", + + // mapzen lost + lost : 'com.mapzen.android:lost:3.0.4', + + // unit test + junit : 'junit:junit:4.12', + mockito : 'org.mockito:mockito-core:2.10.0', + robolectric : 'org.robolectric:robolectric:3.5.1', + + // instrumentation test + testRunner : "com.android.support.test:runner:${testRunnerVersion}", + testRules : "com.android.support.test:rules:${testRunnerVersion}", + testEspressoCore : "com.android.support.test.espresso:espresso-core:${espressoVersion}", + testEspressoIntents : "com.android.support.test.espresso:espresso-intents:${espressoVersion}", + + // support + supportAnnotations : "com.android.support:support-annotations:${supportLibVersion}", + supportAppcompatV7 : "com.android.support:appcompat-v7:${supportLibVersion}", + supportFragmentV4 : "com.android.support:support-fragment:${supportLibVersion}", + supportDesign : "com.android.support:design:${supportLibVersion}", + supportRecyclerView : "com.android.support:recyclerview-v7:${supportLibVersion}", + + // square crew + timber : 'com.jakewharton.timber:timber:4.5.1', + okhttp3 : 'com.squareup.okhttp3:okhttp:3.9.1', + leakCanaryDebug : "com.squareup.leakcanary:leakcanary-android:${leakCanaryVersion}", + leakCanaryRelease : "com.squareup.leakcanary:leakcanary-android-no-op:${leakCanaryVersion}" + ] +}
\ No newline at end of file diff --git a/platform/android/gradle/gradle-checkstyle.gradle b/platform/android/gradle/gradle-checkstyle.gradle new file mode 100644 index 0000000000..41a68f90ce --- /dev/null +++ b/platform/android/gradle/gradle-checkstyle.gradle @@ -0,0 +1,24 @@ +apply plugin: 'checkstyle' + +checkstyle { + toolVersion = "7.1.1" // 7.3 + configFile = "../checkstyle.xml" as File +} + +task checkstyle(type: Checkstyle) { + description 'Checks if the code adheres to coding standards' + group 'verification' + configFile file("../checkstyle.xml") + source 'src' + include '**/*.java' + exclude '**/gen/**' + exclude '**/style/*LayerTest.java' + exclude '**/style/LightTest.java' + exclude '**/style/layers/Property.java' + exclude '**/style/layers/PropertyFactory.java' + exclude '**/style/layers/*Layer.java' + exclude '**/style/light/Light.java' + exclude '**/Expression.java' // allowing single character signature as e() + classpath = files() + ignoreFailures = false +} diff --git a/platform/android/gradle/gradle-config.gradle b/platform/android/gradle/gradle-config.gradle new file mode 100644 index 0000000000..8346806633 --- /dev/null +++ b/platform/android/gradle/gradle-config.gradle @@ -0,0 +1,23 @@ +// +// Configuration file for gradle build execution. +// + +task accessToken { + def tokenFile = new File("${projectDir}/src/main/res/values/developer-config.xml") + if (!tokenFile.exists()) { + String mapboxAccessToken = "$System.env.MAPBOX_ACCESS_TOKEN" + if (mapboxAccessToken == "null") { + System.out.println("You should set the MAPBOX_ACCESS_TOKEN environment variable.") + mapboxAccessToken = "YOUR_MAPBOX_ACCESS_TOKEN_GOES_HERE" + } + String tokenFileContents = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + + "<resources>\n" + + " <string name=\"mapbox_access_token\">" + mapboxAccessToken + "</string>\n" + + "</resources>" + tokenFile.write(tokenFileContents) + } +} + +gradle.projectsEvaluated { + preBuild.dependsOn('accessToken') +} diff --git a/platform/android/gradle/gradle-javadoc.gradle b/platform/android/gradle/gradle-javadoc.gradle new file mode 100644 index 0000000000..39372b4378 --- /dev/null +++ b/platform/android/gradle/gradle-javadoc.gradle @@ -0,0 +1,21 @@ +android.libraryVariants.all { variant -> + def name = variant.name + // noinspection GroovyAssignabilityCheck + task "javadoc$name"(type: Javadoc) { + description = "Generates javadoc for build $name" + failOnError = false + destinationDir = new File(destinationDir, variant.baseName) + source = files(variant.javaCompile.source) + classpath = files(variant.javaCompile.classpath.files) + files(android.bootClasspath) + options.windowTitle("Mapbox Android SDK $VERSION_NAME Reference") + options.docTitle("Mapbox Android SDK $VERSION_NAME") + options.header("Mapbox Android SDK $VERSION_NAME Reference") + options.bottom("© 2015–2018 Mapbox. All rights reserved.") + options.links("http://docs.oracle.com/javase/7/docs/api/") + options.linksOffline("http://d.android.com/reference/", "$System.env.ANDROID_HOME/docs/reference") + options.overview("src/main/java/overview.html") + options.group("Mapbox Android SDK", "com.mapbox.*") + options.group("Third Party Libraries", "com.almeros.*") + exclude '**/R.java', '**/BuildConfig.java', 'com/almeros/**' + } +} diff --git a/platform/android/gradle/gradle-lint.gradle b/platform/android/gradle/gradle-lint.gradle new file mode 100644 index 0000000000..cbebeaa74a --- /dev/null +++ b/platform/android/gradle/gradle-lint.gradle @@ -0,0 +1,30 @@ +task ciLint(type: Copy) { + if (isLocalBuild()) { + from "${projectDir}/lint/lint-baseline-local.xml" + into "${projectDir}" + rename { String fileName -> + fileName.replace("lint-baseline-local.xml", "lint-baseline.xml") + } + } else { + from "${projectDir}/lint/lint-baseline-ci.xml" + into "${projectDir}" + rename { String fileName -> + fileName.replace("lint-baseline-ci.xml", "lint-baseline.xml") + } + } +} + +def isLocalBuild() { + if (System.getenv('IS_LOCAL_DEVELOPMENT') != null) { + return System.getenv('IS_LOCAL_DEVELOPMENT').toBoolean() + } + return true +} + +lint.dependsOn ciLint + +tasks.whenTaskAdded { task -> + if (task.name == 'lintVitalRelease') { + task.dependsOn ciLint + } +}
\ No newline at end of file diff --git a/platform/android/gradle/gradle-make.gradle b/platform/android/gradle/gradle-make.gradle new file mode 100644 index 0000000000..65d971cc96 --- /dev/null +++ b/platform/android/gradle/gradle-make.gradle @@ -0,0 +1,18 @@ +// +// Contains GL-native make commands +// + +task makeClean(type: Exec) { + workingDir '../../' + commandLine 'make', 'clean' +} + +task makeAndroid(type: Exec) { + workingDir '../../' + commandLine 'make', 'android' +} + +task makeAndroidAll(type: Exec) { + workingDir '../../' + commandLine 'make', 'apackage' +} diff --git a/platform/android/gradle/gradle-publish.gradle b/platform/android/gradle/gradle-publish.gradle new file mode 100644 index 0000000000..9805763a99 --- /dev/null +++ b/platform/android/gradle/gradle-publish.gradle @@ -0,0 +1,137 @@ +apply plugin: 'maven' +apply plugin: 'signing' + +allprojects { + group project.GROUP + version project.VERSION_NAME + + repositories { + mavenCentral() + } +} + +repositories { + mavenCentral() +} + +def isReleaseBuild() { + return VERSION_NAME.contains("SNAPSHOT") == false +} + +def isLocalBuild() { + if (System.getenv('IS_LOCAL_DEVELOPMENT') != null) { + return System.getenv('IS_LOCAL_DEVELOPMENT').toBoolean() + } + return true +} + +def getReleaseRepositoryUrl() { + return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : + "https://oss.sonatype.org/service/local/staging/deploy/maven2/" +} + +def getSnapshotRepositoryUrl() { + return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL : + "https://oss.sonatype.org/content/repositories/snapshots/" +} + +def obtainMavenLocalUrl() { + return getRepositories().mavenLocal().getUrl() +} + +def getRepositoryUsername() { + return hasProperty('USERNAME') ? USERNAME : + (hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "") +} + +def getRepositoryPassword() { + return hasProperty('PASSWORD') ? PASSWORD : + (hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "") +} + +afterEvaluate { project -> + uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + if (isLocalBuild()) { + repository(url: obtainMavenLocalUrl()) + } else { + repository(url: getReleaseRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + snapshotRepository(url: getSnapshotRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + } + + pom.project { + name POM_NAME + packaging POM_PACKAGING + description POM_DESCRIPTION + url POM_URL + + scm { + url POM_SCM_URL + connection POM_SCM_CONNECTION + developerConnection POM_SCM_DEV_CONNECTION + } + + licenses { + license { + name POM_LICENCE_NAME + url POM_LICENCE_URL + distribution POM_LICENCE_DIST + } + } + + developers { + developer { + id POM_DEVELOPER_ID + name POM_DEVELOPER_NAME + } + } + } + } + } + } + + signing { + required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives + } + + task androidJavadocs(type: Javadoc) { + source = android.sourceSets.main.java.sourceFiles + classpath = files(android.bootClasspath) + } + + task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir + } + + task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.sourceFiles + } + + artifacts { + archives androidSourcesJar + archives androidJavadocsJar + } +} + +// See: https://github.com/chrisbanes/gradle-mvn-push/issues/43#issuecomment-84140513 +afterEvaluate { project -> + android.libraryVariants.all { variant -> + tasks.androidJavadocs.doFirst { + classpath += files(variant.javaCompile.classpath.files) + } + } +} diff --git a/platform/android/gradle/gradle-tests-staticblockremover.gradle b/platform/android/gradle/gradle-tests-staticblockremover.gradle new file mode 100644 index 0000000000..523dc99dd1 --- /dev/null +++ b/platform/android/gradle/gradle-tests-staticblockremover.gradle @@ -0,0 +1,59 @@ +buildscript { + repositories { + mavenCentral() + mavenLocal() + } + + dependencies { + classpath 'com.darylteo.gradle:javassist-plugin:0.4.1' + } +} + +import com.darylteo.gradle.javassist.tasks.TransformationTask +import com.darylteo.gradle.javassist.transformers.ClassTransformer +import javassist.CtClass +import javassist.CtConstructor + +class StaticBlockRemover extends ClassTransformer { + + private static final NATIVE_MAP_VIEW = "com.mapbox.mapboxsdk.maps.NativeMapView"; + private static + final NATIVE_CONNECTIVITY_LISTENER = "com.mapbox.mapboxsdk.net.NativeConnectivityListener"; + private static final OFFLINE_MANAGER = "com.mapbox.mapboxsdk.offline.OfflineManager"; + private static final OFFLINE_REGION = "com.mapbox.mapboxsdk.offline.OfflineRegion"; + + public void applyTransformations(CtClass clazz) throws Exception { + if (shouldFilter(clazz)) { + CtConstructor constructor = clazz.getClassInitializer() + if (constructor != null) { + clazz.removeConstructor(constructor) + } + } + } + + public boolean shouldFilter(CtClass clazz) { + return hasAStaticBlock(clazz); + } + + private boolean hasAStaticBlock(CtClass clazz) { + String name = clazz.getName(); + boolean isNativeMapView = name.equals(NATIVE_MAP_VIEW); + boolean isNativeConnectivityListener = name.equals(NATIVE_CONNECTIVITY_LISTENER); + boolean isOfflineManager = name.equals(OFFLINE_MANAGER); + boolean isOfflineRegion = name.equals(OFFLINE_REGION); + + return isNativeMapView || isNativeConnectivityListener || isOfflineManager || isOfflineRegion; + } +} + +task removeStatic(type: TransformationTask) { + // TODO Find a better way to get output classes path + String fromToDirPath = buildDir.getAbsolutePath() + "/intermediates/classes/debug" + from fromToDirPath + transformation = new StaticBlockRemover() + into fromToDirPath +} + +afterEvaluate { + compileDebugUnitTestSources.dependsOn(removeStatic) +}
\ No newline at end of file |