import java.util.regex.Pattern apply plugin: 'com.android.library' Properties getGitTag() { def gitTag = "git describe --tags".execute().text.trim() def version = new Properties() def versionPattern = Pattern.compile('v(\\d+).(\\d+).(\\d+)(-(.+))?') def matcher = versionPattern.matcher(gitTag) if (matcher.matches()) { version['major'] = matcher.group(1) version['minor'] = matcher.group(2) version['patch'] = matcher.group(3) try { version['tag'] = matcher.group(5) } catch (Exception ex) {} } return version } ext { gitVersionName = { def version = getGitTag() def name = "${version['major']}.${version['minor']}.${version['patch']}" return name } gitVersionCode = { def version = getGitTag() try { def major = version['major'] as int def minor = version['minor'] as int def patch = version['patch'] as int return (major * 1000) + (minor * 100) + patch } catch (Exception ex) { return 1000 } } gitVersionTag = { def version = getGitTag() return version['tag'] != '' ? '-' + version['tag'] : version['tag'] } } android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { minSdkVersion 26 targetSdkVersion 30 versionCode = gitVersionCode() versionName = gitVersionName() ndkVersion "23.1.7779620" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } sourceSets { main.java { srcDirs = ['../../sdk/src/main/java', '../../sdk/greengrass/event-stream-rpc-model/src/main/java', '../../sdk/greengrass/event-stream-rpc-client/src/main/java', '../../sdk/greengrass/event-stream-rpc-server/src/main/java', '../../sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client', '../../sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model' ] } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } ndkVersion '23.1.7779620' } repositories { mavenLocal() mavenCentral() } dependencies { api 'software.amazon.awssdk.crt:aws-crt-android:0.24.0' implementation 'org.slf4j:slf4j-api:1.7.30' implementation 'com.google.code.gson:gson:2.9.0' implementation 'androidx.appcompat:appcompat:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } // Publishing apply plugin: 'maven-publish' // Sources task androidSourcesJar(type: Jar) { archiveClassifier.set('sources') from android.sourceSets.main.java.srcDirs } // Docs task androidDocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) android.libraryVariants.all { variant -> if (variant.name == 'release') { owner.classpath += variant.javaCompileProvider.get().classpath } } exclude '**/R.html', '**/R.*.html', '**/index.html' } task androidDocsJar(type: Jar) { archiveClassifier.set('javadoc') from androidDocs.destinationDir } afterEvaluate { publishing { publications { release(MavenPublication) { from components.release groupId = 'software.amazon.awssdk.iotdevicesdk' artifactId = 'aws-iot-device-sdk-android' version = android.defaultConfig.versionName } debug(MavenPublication) { from components.debug groupId = 'software.amazon.awssdk.iotdevicesdk' artifactId = 'aws-iot-device-sdk-android' version = android.defaultConfig.versionName + '-SNAPSHOT' } } repositories { maven { def snapshotRepo = "https://aws.oss.sonatype.org/content/repositories/snapshots" def releaseRepo = "https://aws.oss.sonatype.org/" url = version.endsWith('SNAPSHOT') ? snapshotRepo : releaseRepo } mavenLocal() } } }