diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/build.gradle')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/build.gradle | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle new file mode 100644 index 0000000000..f45d83eb07 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/build.gradle @@ -0,0 +1,274 @@ +apply plugin: 'android-sdk-manager' +apply plugin: 'com.android.library' +apply plugin: 'checkstyle' +apply plugin: 'maven' +apply plugin: 'signing' + +allprojects { + group project.GROUP + version project.VERSION_NAME + + repositories { + mavenCentral() + } +} + +repositories { + mavenCentral() +} + +dependencies { + compile 'com.android.support:support-annotations:23.1.0' + compile 'com.android.support:support-v4:23.1.0' + compile 'com.android.support:design:23.1.0' + compile 'com.squareup.okhttp:okhttp:2.5.0' + compile 'com.mapzen.android:lost:1.0.1' +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_MIN_SDK) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + } + + sourceSets { + main.res.srcDirs += 'src/main/res-public' + } + + repositories { + mavenCentral() + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + lintOptions { + checkAllWarnings true + warningsAsErrors true + disable 'InvalidPackage' + } + + buildTypes { + debug { + jniDebuggable true + } + + release { + jniDebuggable false + consumerProguardFiles 'proguard-rules.pro' + } + } +} + +configurations { + all*.exclude group: 'commons-logging', module: 'commons-logging' + all*.exclude group: 'commons-collections', module: 'commons-collections' +} + + +android.libraryVariants.all { variant -> + def name = variant.name + 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) + exclude '**/R.java', '**/BuildConfig.java', 'com/almeros/**' + 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 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.*") + // TODO exclude generated R, BuildConfig, com.almeros.* + } +} + +checkstyle { + configFile project.file('../checks.xml') + showViolations true +} + +/* +task cleanJNIBuilds { + def jniLibsDir = new File("MapboxGLAndroidSDK/src/main/jniLibs") + delete jniLibsDir.absolutePath +} +*/ + +android.libraryVariants.all { variant -> + def name = variant.buildType.name + def checkstyle = project.tasks.create "checkstyle${name.capitalize()}", Checkstyle + checkstyle.dependsOn variant.javaCompile + checkstyle.source variant.javaCompile.source + checkstyle.classpath = project.fileTree(variant.javaCompile.destinationDir) + checkstyle.exclude('**/BuildConfig.java') + checkstyle.exclude('**/R.java') + checkstyle.exclude('**/com/almeros/android/multitouch/**') + project.tasks.getByName("check").dependsOn checkstyle +} + +// From https://raw.github.com/mcxiaoke/gradle-mvn-push/master/jar.gradle +android.libraryVariants.all { variant -> + def jarTask = project.tasks.create(name: "jar${variant.name.capitalize()}", type: Jar) { + from variant.javaCompile.destinationDir + exclude "**/R.class" + exclude "**/BuildConfig.class" + } + jarTask.dependsOn variant.javaCompile + artifacts.add('archives', jarTask); +} + +// From https://raw.github.com/mcxiaoke/gradle-mvn-push/master/gradle-mvn-push.gradle +def isReleaseBuild() { + return VERSION_NAME.contains("SNAPSHOT") == false +} + +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 getRepositoryUsername() { + return hasProperty('USERNAME') ? USERNAME : + (hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "") +} + +def getRepositoryPassword() { + return hasProperty('PASSWORD') ? PASSWORD : + (hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "") +} + + +task apklib(type: Zip) { + appendix = extension = 'apklib' + + from 'AndroidManifest.xml' + into('res') { + from 'res' + } + into('src') { + from 'src' + } +} + +artifacts { + archives apklib +} + +afterEvaluate { project -> + uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + repository(url: getReleaseRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), + password: getRepositoryPassword()) + } + snapshotRepository(url: getSnapshotRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), + password: getRepositoryPassword()) + } + +/* + // Leaving out as artifact was incorrectly named when found + addFilter('aar') { artifact, file -> + artifact.name == archivesBaseName + } + addFilter('apklib') { artifact, file -> + artifact.name == archivesBaseName + '-apklib' + } +*/ + + 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 + } +} + + +task makeClean(type: Exec) { + workingDir '../../' + commandLine 'make', 'clean' +} + +task makeAndroid(type: Exec) { + workingDir '../../' + commandLine 'make', 'android' +} + +task makeAndroidAll(type: Exec) { + workingDir '../../' + commandLine 'make', 'apackage' +} + |