import groovy.json.JsonSlurper //used to parse package.json import groovy.json.JsonBuilder import groovy.json.JsonOutput def isWinOs = System.properties['os.name'].toLowerCase().contains('windows') apply plugin: 'com.android.library' def computeCompuleSdkVersion () { if(project.hasProperty("compileSdk")) { return compileSdk } else { return 23 } } def computeBuildToolsVersion() { if(project.hasProperty("buildToolsVersion")) { return buildToolsVersion } else { return "22.0.1" } } def computeTargetSdkVersion() { if(project.hasProperty("targetSdk")) { return targetSdk } else { return 23 } } android { compileSdkVersion computeCompuleSdkVersion() buildToolsVersion computeBuildToolsVersion() defaultConfig { minSdkVersion 17 targetSdkVersion computeTargetSdkVersion() versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:support-v4:+' } task cleanDistDir (type: Delete) { delete "../dist/" } task fixVersion << { if(project.hasProperty("PACKAGE_VERSION")) { def inputFile = new File("../package.json") def json = new JsonSlurper().parseText(inputFile.text) json.version = json.version + "-" + PACKAGE_VERSION def jb = new JsonBuilder(json); inputFile.text = JsonOutput.prettyPrint(jb.toString()) } } task copyAar << { copy { from "../package.json" into "../dist" } copy { from "build/outputs/aar/widgets-release.aar" into "../dist/platforms/android/" } } task revertPackageJson (type: Exec) { if(isWinOs) { commandLine "cmd", "/c", "git", "checkout", "--", "../package.json" } else { commandLine "git", "checkout", "--", "../package.json" } } task packFramework (type: Exec) { workingDir "../dist" if(isWinOs) { commandLine "cmd", "/c", "npm", "pack" } else { commandLine "npm", "pack" } } assembleRelease.dependsOn(cleanDistDir) fixVersion.dependsOn(assembleRelease) copyAar.dependsOn(fixVersion) revertPackageJson.dependsOn(copyAar) packFramework.dependsOn(revertPackageJson)