123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- /*
- 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()
- google()
- jcenter()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:3.5.1'
- }
- }
-
- // Allow plugins to declare Maven dependencies via build-extras.gradle.
- allprojects {
- repositories {
- mavenCentral()
- jcenter()
- }
- }
-
- task wrapper(type: Wrapper) {
- gradleVersion = '4.10.3'
- }
-
- // 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
- }
- // Whether to append a 0 "abi digit" to versionCode when only a single APK is build
- if (!project.hasProperty('cdvVersionCodeForceAbiDigit')) {
- cdvVersionCodeForceAbiDigit = 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 hasBuildExtras1 = file('build-extras.gradle').exists()
- if (hasBuildExtras1) {
- apply from: 'build-extras.gradle'
- }
-
- def hasBuildExtras2 = file('../build-extras.gradle').exists()
- if (hasBuildExtras2) {
- apply from: '../build-extras.gradle'
- }
-
- // Set property defaults after extension .gradle files.
- ext.cdvCompileSdkVersion = cdvCompileSdkVersion == null ? (
- defaultCompileSdkVersion == null
- ? privateHelpers.getProjectTarget()
- : defaultCompileSdkVersion
- ) : Integer.parseInt('' + cdvCompileSdkVersion);
-
- if (ext.cdvBuildToolsVersion == null) {
- ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
- //ext.cdvBuildToolsVersion = project.ext.defaultBuildToolsVersion
- }
- 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.cdvVersionCodeForceAbiDigit = cdvVersionCodeForceAbiDigit == null ? false : cdvVersionCodeForceAbiDigit.toBoolean();
-
- // minSdkVersion, maxSdkVersion and targetSdkVersion
- ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? defaultMinSdkVersion : Integer.parseInt('' + cdvMinSdkVersion)
- if (cdvMaxSdkVersion != null) {
- ext.cdvMaxSdkVersion = Integer.parseInt('' + cdvMaxSdkVersion)
- }
- ext.cdvTargetSdkVersion = cdvTargetSdkVersion == null ? defaultTargetSdkVersion : Integer.parseInt('' + cdvTargetSdkVersion)
-
- 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 {
- doLast {
- println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
- println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
- println('cdvVersionCode=' + cdvVersionCode)
- println('cdvVersionCodeForceAbiDigit=' + cdvVersionCodeForceAbiDigit)
- 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 {
- 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
-
- // This code exists for Crosswalk and other Native APIs.
- // By default, we multiply the existing version code in the
- // Android Manifest by 10 and add a number for each architecture.
- // If you are not using Crosswalk or SQLite, you can
- // ignore this chunk of code, and your version codes will be respected.
-
- if (Boolean.valueOf(cdvBuildMultipleApks)) {
- flavorDimensions "default"
-
- productFlavors {
- armeabi {
- versionCode defaultConfig.versionCode*10 + 1
- ndk {
- abiFilters = ["armeabi"]
- }
- }
- armv7 {
- versionCode defaultConfig.versionCode*10 + 2
- ndk {
- abiFilters = ["armeabi-v7a"]
- }
- }
- arm64 {
- versionCode defaultConfig.versionCode*10 + 3
- ndk {
- abiFilters = ["arm64-v8a"]
- }
- }
- x86 {
- versionCode defaultConfig.versionCode*10 + 4
- ndk {
- abiFilters = ["x86"]
- }
- }
- x86_64 {
- versionCode defaultConfig.versionCode*10 + 5
- ndk {
- abiFilters = ["x86_64"]
- }
- }
- }
- } else if (Boolean.valueOf(cdvVersionCodeForceAbiDigit)) {
- // This provides compatibility to the default logic for versionCode before cordova-android 5.2.0
- defaultConfig {
- versionCode defaultConfig.versionCode*10
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- 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)
- }
- }
-
- /*
- * WARNING: Cordova Lib and platform scripts do management inside of this code here,
- * if you are adding the dependencies manually, do so outside the comments, otherwise
- * the Cordova tools will overwrite them
- */
-
-
- dependencies {
- implementation fileTree(dir: 'libs', include: '*.jar')
- // SUB-PROJECT DEPENDENCIES START
- implementation(project(path: ":CordovaLib"))
- // 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(['validateReleaseSigning', 'validateSigningRelease', 'validateSigningArmv7Release', 'validateSigningX76Release'].contains(task.name)) {
- 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()
- }
|