mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 13:51:41 +00:00
449ca95bae
While extended Java 8 support, especially on older API levels, was already introduced in v3.0 and we're currently on 3.1.0, we still take the opportunity to upgrade to the latest plugin version just to be safe. --HG-- extra : rebase_source : edf81582552439a139a6a978039f4638e161bf99 extra : source : 1f151d5b8992665c3da17f81e89f6e053473cea8
181 lines
6.5 KiB
Groovy
181 lines
6.5 KiB
Groovy
def tryInt = { string ->
|
|
if (string == null) {
|
|
return string
|
|
}
|
|
if (string.isInteger()) {
|
|
return string as Integer
|
|
}
|
|
return string
|
|
}
|
|
|
|
allprojects {
|
|
// Expose the per-object-directory configuration to all projects.
|
|
ext {
|
|
mozconfig = gradle.mozconfig
|
|
topsrcdir = gradle.mozconfig.topsrcdir
|
|
topobjdir = gradle.mozconfig.topobjdir
|
|
|
|
compileSdkVersion = tryInt(mozconfig.substs.ANDROID_COMPILE_SDK_VERSION)
|
|
targetSdkVersion = tryInt(mozconfig.substs.ANDROID_TARGET_SDK)
|
|
minSdkVersion = tryInt(mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION)
|
|
manifestPlaceholders = [
|
|
ANDROID_PACKAGE_NAME: mozconfig.substs.ANDROID_PACKAGE_NAME,
|
|
ANDROID_TARGET_SDK: mozconfig.substs.ANDROID_TARGET_SDK,
|
|
MOZ_ANDROID_MIN_SDK_VERSION: mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION,
|
|
MOZ_ANDROID_SHARED_ID: "${mozconfig.substs.ANDROID_PACKAGE_NAME}.sharedID",
|
|
]
|
|
}
|
|
|
|
repositories {
|
|
gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository ->
|
|
maven {
|
|
url repository
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
buildDir "${topobjdir}/gradle/build"
|
|
|
|
buildscript {
|
|
repositories {
|
|
gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository ->
|
|
maven {
|
|
url repository
|
|
}
|
|
}
|
|
// For in tree plugins.
|
|
maven {
|
|
url "file://${gradle.mozconfig.topsrcdir}/mobile/android/gradle/m2repo"
|
|
}
|
|
}
|
|
|
|
ext.kotlin_version = '1.2.41'
|
|
ext.support_library_version = '26.1.0'
|
|
ext.jacoco_version = '0.8.1'
|
|
|
|
if (gradle.mozconfig.substs.MOZ_ANDROID_GOOGLE_PLAY_SERVICES) {
|
|
ext.google_play_services_version = '15.0.1'
|
|
}
|
|
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:3.1.4'
|
|
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2'
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
}
|
|
}
|
|
|
|
if ('multi' == System.env.AB_CD) {
|
|
// Multi-l10n builds set `AB_CD=multi`, which isn't a valid locale. This
|
|
// causes the
|
|
//
|
|
// |mach build| > |mach gradle| > |make gradle-targets| > AndroidManifest.xml > strings.xml > multi/brand.dtd
|
|
//
|
|
// dependency chain to fail, since multi isn't a real locale. To avoid
|
|
// this, if Gradle is invoked with AB_CD=multi, we don't invoke Make at all.
|
|
task generateCodeAndResources()
|
|
} else if (System.env.IS_LANGUAGE_REPACK == '1') {
|
|
// Single-locale l10n repacks set `IS_LANGUAGE_REPACK=1` and handle resource
|
|
// and code generation themselves.
|
|
task generateCodeAndResources()
|
|
} else {
|
|
task generateCodeAndResources(type:Exec) {
|
|
workingDir "${topobjdir}"
|
|
|
|
commandLine mozconfig.substs.GMAKE
|
|
args '-C'
|
|
args "${topobjdir}/mobile/android/base"
|
|
args 'gradle-targets'
|
|
|
|
// Only show the output if something went wrong.
|
|
ignoreExitValue = true
|
|
standardOutput = new ByteArrayOutputStream()
|
|
errorOutput = standardOutput
|
|
doLast {
|
|
if (execResult.exitValue != 0) {
|
|
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${execResult.exitValue}:\n\n${standardOutput.toString()}")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
afterEvaluate {
|
|
subprojects { project ->
|
|
if (project.name != 'thirdparty') {
|
|
tasks.withType(JavaCompile) {
|
|
// Add compiler args for all code except third-party code.
|
|
options.compilerArgs += [
|
|
// Turn on all warnings, except...
|
|
"-Xlint:all",
|
|
// Deprecation, because we do use deprecated API for compatibility.
|
|
"-Xlint:-deprecation",
|
|
// Serial, because we don't use Java serialization.
|
|
"-Xlint:-serial",
|
|
// Classfile, because javac has a bug with MethodParameters attributes
|
|
// with Java 7. https://bugs.openjdk.java.net/browse/JDK-8190452
|
|
"-Xlint:-classfile",
|
|
// Turn all remaining warnings into errors,
|
|
// unless marked by @SuppressWarnings.
|
|
"-Werror"]
|
|
}
|
|
if (project.name == 'app') {
|
|
tasks.withType(JavaCompile) {
|
|
// Turn off classfile warnings because upon updating to play services 15.0.0
|
|
// a warning is being thrown from play-services-base which fails the build
|
|
// (com/google/android/gms/common/api/GoogleApiClient.class):
|
|
// warning: Cannot find annotation method 'value()' in type 'GuardedBy':
|
|
// class file for javax.annotation.concurrent.GuardedBy not found
|
|
options.compilerArgs += ["-Xlint:-classfile"]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!hasProperty('android')) {
|
|
return
|
|
}
|
|
android.applicationVariants.all {
|
|
preBuild.dependsOn rootProject.generateCodeAndResources
|
|
}
|
|
android.libraryVariants.all {
|
|
preBuild.dependsOn rootProject.generateCodeAndResources
|
|
}
|
|
}
|
|
}
|
|
|
|
apply plugin: 'idea'
|
|
|
|
idea {
|
|
project {
|
|
languageLevel = '1.8'
|
|
}
|
|
|
|
module {
|
|
// Object directories take a huge amount of time for IntelliJ to index.
|
|
// Exclude them. Convention is that object directories start with obj.
|
|
// IntelliJ is clever and will not exclude the parts of the object
|
|
// directory that are referenced, if there are any. In practice,
|
|
// indexing the entirety of the tree is taking too long, so exclude all
|
|
// but mobile/.
|
|
def topsrcdirURI = file(topsrcdir).toURI()
|
|
excludeDirs += files(file(topsrcdir)
|
|
.listFiles({it.isDirectory()} as FileFilter)
|
|
.collect({topsrcdirURI.relativize(it.toURI()).toString()}) // Relative paths.
|
|
.findAll({!it.equals('mobile/')}))
|
|
|
|
// If topobjdir is below topsrcdir, hide only some portions of that tree.
|
|
def topobjdirURI = file(topobjdir).toURI()
|
|
if (!topsrcdirURI.relativize(topobjdirURI).isAbsolute()) {
|
|
excludeDirs -= file(topobjdir)
|
|
excludeDirs += files(file(topobjdir).listFiles())
|
|
excludeDirs -= file("${topobjdir}/gradle")
|
|
}
|
|
|
|
if (!mozconfig.substs.MOZ_INSTALL_TRACKING) {
|
|
excludeDirs += file("${topsrcdir}/mobile/android/thirdparty/com/adjust")
|
|
}
|
|
}
|
|
}
|
|
|
|
task wrapper(type: Wrapper) {
|
|
}
|