import java.nio.charset.StandardCharsets /** * Copyright 2014 Ryszard Wiśniewski * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ buildscript { ext { depends = [ baksmali : 'com.android.tools.smali:smali-baksmali:3.0.3', commons_cli : 'commons-cli:commons-cli:1.5.0', commons_io : 'commons-io:commons-io:2.13.0', commons_lang : 'org.apache.commons:commons-lang3:3.12.0', commons_text : 'org.apache.commons:commons-text:1.10.0', guava : 'com.google.guava:guava:32.0.1-jre', junit : 'junit:junit:4.13.2', proguard_gradle: 'com.guardsquare:proguard-gradle:7.3.2', snakeyaml : 'org.yaml:snakeyaml:1.32:android', smali : 'com.android.tools.smali:smali:3.0.3', xmlpull : 'xpp3:xpp3:1.1.4c', xmlunit : 'xmlunit:xmlunit:1.6', ] } repositories { gradlePluginPortal() google() } dependencies { classpath "gradle.plugin.com.github.johnrengelman:shadow:8.0.0" classpath "gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:0.16.1" } } apply from: 'gradle/functions.gradle' version = '2.8.2' def suffix = 'SNAPSHOT' defaultTasks 'build', 'shadowJar', 'proguard' allprojects { apply plugin: 'java' apply plugin: 'com.github.hierynomus.license' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 license { header rootProject.file("brut.j.common/src/templates/apache2.0-header.txt") exclude "**/android/content/res/*.java" exclude "**/android/util/*.java" include "**/*.java" mapping { java = 'SLASHSTAR_STYLE' } ext { year = '2010' brut = 'Ryszard Wiśniewski' brutEmail = 'brut.alll@gmail.com' ibot = 'Connor Tumbleson' ibotEmail = 'connor.tumbleson@gmail.com' } strictCheck true } // license plugin automatically fires these tasks, disable them and run them during releases gradle.startParameter.excludedTaskNames += [ "licenseMain", "licenseTest" ] repositories { mavenCentral() google() } } tasks.withType(JavaCompile).configureEach { options.encoding = StandardCharsets.UTF_8.toString() options.compilerArgs += ["-Xlint:-options"] } def mavenVersion = 'unspecified' if (!('release' in gradle.startParameter.taskNames)) { def hash = getCheckedOutGitCommitHash() if (hash == null) { project.ext.set("hash", "dirty") project.ext.set("apktool_version", version + "-dirty") println "Building SNAPSHOT (no .git folder found)" } else { project.ext.set("hash", hash) project.ext.set("apktool_version", version + "-" + hash + "-SNAPSHOT") mavenVersion = version + "-SNAPSHOT" println "Building SNAPSHOT (${getCheckedOutBranch()}): $hash" } } else { project.ext.set("hash", "") if (suffix.length() > 0) { project.ext.set("apktool_version", version + "-" + suffix) } else { project.ext.set("apktool_version", version) } mavenVersion = version println "Building RELEASE (${getCheckedOutBranch()}): $project.ext.apktool_version" } build.doFirst { def javaVersion = System.getProperty("java.version") // fail the build if java (1.5/1.6/1.7) if (javaVersion.startsWith("1.5") || javaVersion.startsWith("1.6") || javaVersion.startsWith("1.7")) { throw new GradleException("You can fix this problem!\n" + "We found a " + javaVersion + " JDK\n" + "Please update JAVA_HOME to use at least a 1.8 JDK\n" + "Currently it is set to: " + System.getProperty("java.home") ) } } // used for official releases only. Please don't use task release { } // used for publishing snapshot builds to maven. task snapshot { } subprojects { apply plugin: 'java' test { // https://github.com/iBotPeaches/Apktool/issues/3174 systemProperty 'jdk.nio.zipfs.allowDotZipEntry', 'true' systemProperty 'jdk.util.zip.disableZip64ExtraFieldValidation', 'true' testLogging { exceptionFormat = 'full' } } def mavenProjects = ['apktool-lib', 'apktool-cli', 'brut.j.common', 'brut.j.util', 'brut.j.dir'] if (project.name in mavenProjects) { apply plugin: 'maven-publish' apply plugin: 'signing' publishing { publications { maven(MavenPublication) { from project.components.java groupId = 'org.apktool' artifactId = project.name version = mavenVersion pom { name = 'Apktool' description = 'A tool for reverse engineering Android apk files.' url = 'https://apktool.org' licenses { license { name = 'The Apache License 2.0' url = 'https://opensource.org/licenses/Apache-2.0' } } developers { developer { id = 'iBotPeaches' name = 'Connor Tumbleson' email = 'connor.tumbleson@gmail.com' } developer { id = 'brutall' name = 'Ryszard Wiśniewski' email = 'brut.alll@gmail.com' } } scm { connection = 'scm:git:git://github.com/iBotPeaches/Apktool.git' developerConnection = 'scm:git:git@github.com:iBotPeaches/Apktool.git' url = 'https://github.com/iBotPeaches/Apktool' } } } } if (rootProject.hasProperty('ossrhUsername') && rootProject.hasProperty('ossrhPassword')) { repositories { maven { if (mavenVersion.endsWith('-SNAPSHOT')) { url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/' } else { url = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' } credentials { username ossrhUsername password ossrhPassword } } } } } signing { required { gradle.taskGraph.hasTask('publish') } sign(publishing.publications["maven"]) } java { withJavadocJar() withSourcesJar() } tasks.getByPath(':release').dependsOn(publish) tasks.getByPath(':snapshot').dependsOn(publish) } }