diff --git a/bin/templates/cordova/lib/builders/ProjectBuilder.js b/bin/templates/cordova/lib/builders/ProjectBuilder.js index 4ad6033fcb..fdf35be457 100644 --- a/bin/templates/cordova/lib/builders/ProjectBuilder.js +++ b/bin/templates/cordova/lib/builders/ProjectBuilder.js @@ -303,7 +303,7 @@ class ProjectBuilder { // update/set the distributionUrl in the gradle-wrapper.properties const gradleWrapperPropertiesPath = path.join(self.root, 'gradle/wrapper/gradle-wrapper.properties'); const gradleWrapperProperties = createEditor(gradleWrapperPropertiesPath); - const distributionUrl = process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL || 'https://services.gradle.org/distributions/gradle-6.1-all.zip'; + const distributionUrl = process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL || 'https://services.gradle.org/distributions/gradle-6.5-all.zip'; gradleWrapperProperties.set('distributionUrl', distributionUrl); gradleWrapperProperties.save(); diff --git a/bin/templates/project/app/build.gradle b/bin/templates/project/app/build.gradle index fdbb725456..f2485d05a7 100644 --- a/bin/templates/project/app/build.gradle +++ b/bin/templates/project/app/build.gradle @@ -53,7 +53,7 @@ buildscript { dependencies { apply from: '../CordovaLib/cordova.gradle' - classpath 'com.android.tools.build:gradle:3.5.3' + classpath 'com.android.tools.build:gradle:4.0.0' if (cdvHelpers.getConfigPreference('GradlePluginKotlinEnabled', 'false').toBoolean()) { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" @@ -89,7 +89,7 @@ allprojects { } task wrapper(type: Wrapper) { - gradleVersion = '6.1' + gradleVersion = '6.5' } // Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties. @@ -161,9 +161,9 @@ if (hasBuildExtras2) { // Set property defaults after extension .gradle files. ext.cdvCompileSdkVersion = cdvCompileSdkVersion == null ? ( - defaultCompileSdkVersion == null + defaultCompileSdkVersion == null ? privateHelpers.getProjectTarget() - : defaultCompileSdkVersion + : defaultCompileSdkVersion ) : Integer.parseInt('' + cdvCompileSdkVersion); if (ext.cdvBuildToolsVersion == null) { diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 14248fde18..089660c280 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -25,7 +25,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.3' + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/bin/templates/project/legacy/build.gradle b/bin/templates/project/legacy/build.gradle deleted file mode 100644 index c37650715f..0000000000 --- a/bin/templates/project/legacy/build.gradle +++ /dev/null @@ -1,318 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you 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 - - http://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. -*/ - -apply plugin: 'com.android.application' - -buildscript { - repositories { - mavenCentral() - jcenter() - } - - // Switch the Android Gradle plugin version requirement depending on the - // installed version of Gradle. This dependency is documented at - // http://tools.android.com/tech-docs/new-build-system/version-compatibility - // and https://issues.apache.org/jira/browse/CB-8143 - dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' - } -} - -// Allow plugins to declare Maven dependencies via build-extras.gradle. -allprojects { - repositories { - mavenCentral(); - jcenter() - } -} - -task wrapper(type: Wrapper) { - gradleVersion = '2.14.1' -} - -// Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties. -// Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html -ext { - apply from: 'CordovaLib/cordova.gradle' - // The value for android.compileSdkVersion. - if (!project.hasProperty('cdvCompileSdkVersion')) { - cdvCompileSdkVersion = null; - } - // The value for android.buildToolsVersion. - if (!project.hasProperty('cdvBuildToolsVersion')) { - cdvBuildToolsVersion = null; - } - // Sets the versionCode to the given value. - if (!project.hasProperty('cdvVersionCode')) { - cdvVersionCode = null - } - // Sets the minSdkVersion to the given value. - if (!project.hasProperty('cdvMinSdkVersion')) { - cdvMinSdkVersion = null - } - // Sets the maxSdkVersion to the given value. - if (!project.hasProperty('cdvMaxSdkVersion')) { - cdvMaxSdkVersion = null - } - // The value for android.targetSdkVersion. - if (!project.hasProperty('cdvTargetSdkVersion')) { - cdvTargetSdkVersion = null; - } - // Whether to build architecture-specific APKs. - if (!project.hasProperty('cdvBuildMultipleApks')) { - cdvBuildMultipleApks = null - } - // .properties files to use for release signing. - if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) { - cdvReleaseSigningPropertiesFile = null - } - // .properties files to use for debug signing. - if (!project.hasProperty('cdvDebugSigningPropertiesFile')) { - cdvDebugSigningPropertiesFile = null - } - // Set by build.js script. - if (!project.hasProperty('cdvBuildArch')) { - cdvBuildArch = null - } - - // Plugin gradle extensions can append to this to have code run at the end. - cdvPluginPostBuildExtras = [] -} - -// PLUGIN GRADLE EXTENSIONS START -// PLUGIN GRADLE EXTENSIONS END - -def hasBuildExtras = file('build-extras.gradle').exists() -if (hasBuildExtras) { - apply from: 'build-extras.gradle' -} - -// Set property defaults after extension .gradle files. -if (ext.cdvCompileSdkVersion == null) { - ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget() -} -if (ext.cdvBuildToolsVersion == null) { - ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools() -} -if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) { - ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties' -} -if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) { - ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties' -} - -// Cast to appropriate types. -ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean(); -ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion) - -if(cdvMaxSdkVersion != null) { - ext.cdvMaxSdkVersion = Integer.parseInt('' + cdvMaxSdkVersion) -} - -ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode) - -def computeBuildTargetName(debugBuild) { - def ret = 'assemble' - if (cdvBuildMultipleApks && cdvBuildArch) { - def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch - ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1); - } - return ret + (debugBuild ? 'Debug' : 'Release') -} - -// Make cdvBuild a task that depends on the debug/arch-sepecific task. -task cdvBuildDebug -cdvBuildDebug.dependsOn { - return computeBuildTargetName(true) -} - -task cdvBuildRelease -cdvBuildRelease.dependsOn { - return computeBuildTargetName(false) -} - -task cdvPrintProps << { - println('cdvCompileSdkVersion=' + cdvCompileSdkVersion) - println('cdvBuildToolsVersion=' + cdvBuildToolsVersion) - println('cdvVersionCode=' + cdvVersionCode) - println('cdvMinSdkVersion=' + cdvMinSdkVersion) - println('cdvMaxSdkVersion=' + cdvMaxSdkVersion) - println('cdvTargetSdkVersion=' + cdvTargetSdkVersion) - println('cdvBuildMultipleApks=' + cdvBuildMultipleApks) - println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile) - println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile) - println('cdvBuildArch=' + cdvBuildArch) - println('computedVersionCode=' + android.defaultConfig.versionCode) - android.productFlavors.each { flavor -> - println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode) - } -} - -android { - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - resources.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['assets'] - jniLibs.srcDirs = ['libs'] - } - } - - defaultConfig { - versionCode cdvVersionCode ?: new BigInteger("" + privateHelpers.extractIntFromManifest("versionCode")) - applicationId privateHelpers.extractStringFromManifest("package") - - if (cdvMinSdkVersion != null) { - minSdkVersion cdvMinSdkVersion - } - - if (cdvMaxSdkVersion != null) { - maxSdkVersion cdvMaxSdkVersion - } - - if(cdvTargetSdkVersion != null) { - targetSdkVersion cdvTargetSdkVersion - } - } - - lintOptions { - abortOnError false; - } - - compileSdkVersion cdvCompileSdkVersion - buildToolsVersion cdvBuildToolsVersion - - if (Boolean.valueOf(cdvBuildMultipleApks)) { - productFlavors { - armv7 { - versionCode defaultConfig.versionCode*10 + 2 - ndk { - abiFilters "armeabi-v7a", "" - } - } - x86 { - versionCode defaultConfig.versionCode*10 + 4 - ndk { - abiFilters "x86", "" - } - } - all { - ndk { - abiFilters "all", "" - } - } - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_6 - targetCompatibility JavaVersion.VERSION_1_6 - } - - if (cdvReleaseSigningPropertiesFile) { - signingConfigs { - release { - // These must be set or Gradle will complain (even if they are overridden). - keyAlias = "" - keyPassword = "__unset" // And these must be set to non-empty in order to have the signing step added to the task graph. - storeFile = null - storePassword = "__unset" - } - } - buildTypes { - release { - signingConfig signingConfigs.release - } - } - addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release) - } - if (cdvDebugSigningPropertiesFile) { - addSigningProps(cdvDebugSigningPropertiesFile, signingConfigs.debug) - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: '*.jar') - // SUB-PROJECT DEPENDENCIES START - // SUB-PROJECT DEPENDENCIES END -} - -def promptForReleaseKeyPassword() { - if (!cdvReleaseSigningPropertiesFile) { - return; - } - if ('__unset'.equals(android.signingConfigs.release.storePassword)) { - android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ') - } - if ('__unset'.equals(android.signingConfigs.release.keyPassword)) { - android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: '); - } -} - -gradle.taskGraph.whenReady { taskGraph -> - taskGraph.getAllTasks().each() { task -> - if (task.name == 'validateReleaseSigning' || task.name == 'validateSigningRelease') { - promptForReleaseKeyPassword() - } - } -} - -def addSigningProps(propsFilePath, signingConfig) { - def propsFile = file(propsFilePath) - def props = new Properties() - propsFile.withReader { reader -> - props.load(reader) - } - - def storeFile = new File(props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile')) - if (!storeFile.isAbsolute()) { - storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile()) - } - if (!storeFile.exists()) { - throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath()) - } - signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias') - signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword)) - signingConfig.storeFile = storeFile - signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword)) - def storeType = props.get('storeType', props.get('key.store.type', '')) - if (!storeType) { - def filename = storeFile.getName().toLowerCase(); - if (filename.endsWith('.p12') || filename.endsWith('.pfx')) { - storeType = 'pkcs12' - } else { - storeType = signingConfig.storeType // "jks" - } - } - signingConfig.storeType = storeType -} - -for (def func : cdvPluginPostBuildExtras) { - func() -} - -// This can be defined within build-extras.gradle as: -// ext.postBuildExtras = { ... code here ... } -if (hasProperty('postBuildExtras')) { - postBuildExtras() -} diff --git a/framework/build.gradle b/framework/build.gradle index 43307d8915..1541251c82 100644 --- a/framework/build.gradle +++ b/framework/build.gradle @@ -31,7 +31,7 @@ buildscript { dependencies { // The gradle plugin and the maven plugin have to be updated after each version of Android // studio comes out - classpath 'com.android.tools.build:gradle:3.6.0' + classpath 'com.android.tools.build:gradle:4.0.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' } diff --git a/spec/fixtures/android_studio_project/build.gradle b/spec/fixtures/android_studio_project/build.gradle index 8df9299d5a..4dc1795ee4 100644 --- a/spec/fixtures/android_studio_project/build.gradle +++ b/spec/fixtures/android_studio_project/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0' + classpath 'com.android.tools.build:gradle:4.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/test/android/build.gradle b/test/android/build.gradle index 8ed97544f5..e624f17e63 100644 --- a/test/android/build.gradle +++ b/test/android/build.gradle @@ -30,7 +30,7 @@ buildscript { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath 'com.android.tools.build:gradle:3.6.0' + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/test/android/wrapper.gradle b/test/android/wrapper.gradle index 3980234f73..94d95d2da9 100644 --- a/test/android/wrapper.gradle +++ b/test/android/wrapper.gradle @@ -17,5 +17,5 @@ */ wrapper { - gradleVersion = '6.1' + gradleVersion = '6.5' } diff --git a/test/androidx/build.gradle b/test/androidx/build.gradle index 46eb0c493d..a90dee336a 100644 --- a/test/androidx/build.gradle +++ b/test/androidx/build.gradle @@ -28,7 +28,7 @@ buildscript { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath 'com.android.tools.build:gradle:3.6.0' + classpath 'com.android.tools.build:gradle:4.0.0' } } diff --git a/test/androidx/wrapper.gradle b/test/androidx/wrapper.gradle index 3980234f73..94d95d2da9 100644 --- a/test/androidx/wrapper.gradle +++ b/test/androidx/wrapper.gradle @@ -17,5 +17,5 @@ */ wrapper { - gradleVersion = '6.1' + gradleVersion = '6.5' }