2017-04-05 06:18:46 +08:00
/ *
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'
2021-07-06 14:38:28 +08:00
if ( cordovaConfig . IS_GRADLE_PLUGIN_KOTLIN_ENABLED ) {
2020-01-27 15:14:58 +08:00
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
}
2017-04-05 06:18:46 +08:00
buildscript {
2020-01-27 15:14:58 +08:00
apply from: '../CordovaLib/cordova.gradle'
2021-07-06 14:38:28 +08:00
// Checks if the kotlin version format is valid.
if ( cordovaConfig . IS_GRADLE_PLUGIN_KOTLIN_ENABLED ) {
if ( ! cdvHelpers . isVersionValid ( cordovaConfig . KOTLIN_VERSION ) ) {
throw new GradleException ( "The defined Kotlin version (${cordovaConfig.KOTLIN_VERSION}) does not appear to be a valid version." )
2020-01-27 15:14:58 +08:00
}
}
2021-03-27 23:11:56 +08:00
apply from: 'repositories.gradle'
repositories repos
2017-04-05 06:18:46 +08:00
dependencies {
2021-07-06 14:38:28 +08:00
classpath "com.android.tools.build:gradle:${cordovaConfig.AGP_VERSION}"
2020-01-16 07:40:54 +08:00
2021-07-06 14:38:28 +08:00
if ( cordovaConfig . IS_GRADLE_PLUGIN_KOTLIN_ENABLED ) {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${cordovaConfig.KOTLIN_VERSION}"
2020-01-27 15:14:58 +08:00
}
2021-07-06 14:38:28 +08:00
if ( cordovaConfig . IS_GRADLE_PLUGIN_GOOGLE_SERVICES_ENABLED ) {
// Checks if the kotlin version format is valid.
2021-07-20 16:49:21 +08:00
if ( ! cdvHelpers . isVersionValid ( cordovaConfig . GRADLE_PLUGIN_GOOGLE_SERVICES_VERSION ) ) {
2021-07-06 14:38:28 +08:00
throw new GradleException ( "The defined Google Services plugin version (${cordovaConfig.GRADLE_PLUGIN_GOOGLE_SERVICES_VERSION}) does not appear to be a valid version." )
2020-01-16 07:40:54 +08:00
}
// Create the Google Services classpath and set it.
2021-07-06 14:38:28 +08:00
String gradlePluginGoogleServicesClassPath = "com.google.gms:google-services:${cordovaConfig.GRADLE_PLUGIN_GOOGLE_SERVICES_VERSION}"
2020-01-17 07:22:06 +08:00
println "Adding classpath: ${gradlePluginGoogleServicesClassPath}"
classpath gradlePluginGoogleServicesClassPath
2020-01-16 07:40:54 +08:00
}
2017-04-05 06:18:46 +08:00
}
}
// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
2021-08-02 13:19:40 +08:00
def hasRepositoriesGradle = file ( 'repositories.gradle' ) . exists ( )
if ( hasRepositoriesGradle ) {
apply from: 'repositories.gradle'
} else {
apply from: "${project.rootDir}/repositories.gradle"
}
2021-03-27 23:11:56 +08:00
repositories repos
2017-04-05 06:18:46 +08:00
}
task wrapper ( type: Wrapper ) {
2021-07-06 14:38:28 +08:00
gradleVersion = cordovaConfig . GRADLE_VERSION
2017-04-05 06:18:46 +08:00
}
// 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 {
2017-06-14 02:58:00 +08:00
apply from: '../CordovaLib/cordova.gradle'
2018-09-26 15:29:31 +08:00
2017-04-05 06:18:46 +08:00
// Sets the versionCode to the given value.
if ( ! project . hasProperty ( 'cdvVersionCode' ) ) {
cdvVersionCode = null
}
// Whether to build architecture-specific APKs.
if ( ! project . hasProperty ( 'cdvBuildMultipleApks' ) ) {
cdvBuildMultipleApks = null
}
2018-09-12 18:04:00 +08:00
// Whether to append a 0 "abi digit" to versionCode when only a single APK is build
2017-11-28 06:10:59 +08:00
if ( ! project . hasProperty ( 'cdvVersionCodeForceAbiDigit' ) ) {
cdvVersionCodeForceAbiDigit = null
}
2017-04-05 06:18:46 +08:00
// .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
2018-11-14 21:00:36 +08:00
def hasBuildExtras1 = file ( 'build-extras.gradle' ) . exists ( )
if ( hasBuildExtras1 ) {
2017-04-05 06:18:46 +08:00
apply from: 'build-extras.gradle'
}
2018-11-14 21:00:36 +08:00
def hasBuildExtras2 = file ( '../build-extras.gradle' ) . exists ( )
if ( hasBuildExtras2 ) {
apply from: '../build-extras.gradle'
}
2021-07-06 14:38:28 +08:00
// Apply updates that might come from build-extra.
privateHelpers . applyCordovaConfigCustomization ( )
2017-04-05 06:18:46 +08:00
// Set property defaults after extension .gradle files.
2017-11-30 02:56:05 +08:00
if ( ext . cdvDebugSigningPropertiesFile = = null & & file ( '../debug-signing.properties' ) . exists ( ) ) {
ext . cdvDebugSigningPropertiesFile = '../debug-signing.properties'
2017-04-05 06:18:46 +08:00
}
2017-11-30 02:56:05 +08:00
if ( ext . cdvReleaseSigningPropertiesFile = = null & & file ( '../release-signing.properties' ) . exists ( ) ) {
ext . cdvReleaseSigningPropertiesFile = '../release-signing.properties'
2017-04-05 06:18:46 +08:00
}
// Cast to appropriate types.
ext . cdvBuildMultipleApks = cdvBuildMultipleApks = = null ? false : cdvBuildMultipleApks . toBoolean ( ) ;
2017-11-28 06:10:59 +08:00
ext . cdvVersionCodeForceAbiDigit = cdvVersionCodeForceAbiDigit = = null ? false : cdvVersionCodeForceAbiDigit . toBoolean ( ) ;
2017-04-05 06:18:46 +08:00
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 )
}
2018-09-26 15:29:31 +08:00
task cdvPrintProps {
doLast {
println ( 'cdvBuildToolsVersion=' + cdvBuildToolsVersion )
println ( 'cdvVersionCode=' + cdvVersionCode )
println ( 'cdvVersionCodeForceAbiDigit=' + cdvVersionCodeForceAbiDigit )
2021-07-06 14:38:28 +08:00
println ( 'cdvSdkVersion=' + cdvSdkVersion )
2018-09-26 15:29:31 +08:00
println ( 'cdvMinSdkVersion=' + cdvMinSdkVersion )
2019-04-06 12:28:25 +08:00
println ( 'cdvMaxSdkVersion=' + cdvMaxSdkVersion )
2018-09-26 15:29:31 +08:00
println ( 'cdvBuildMultipleApks=' + cdvBuildMultipleApks )
println ( 'cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile )
println ( 'cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile )
println ( 'cdvBuildArch=' + cdvBuildArch )
println ( 'computedVersionCode=' + android . defaultConfig . versionCode )
2021-04-19 06:30:06 +08:00
println ( 'cdvAndroidXAppCompatVersion=' + cdvAndroidXAppCompatVersion )
2021-07-06 22:39:12 +08:00
println ( 'cdvAndroidXWebKitVersion=' + cdvAndroidXWebKitVersion )
2018-09-26 15:29:31 +08:00
android . productFlavors . each { flavor - >
println ( 'computed' + flavor . name . capitalize ( ) + 'VersionCode=' + flavor . versionCode )
}
2017-04-05 06:18:46 +08:00
}
}
android {
defaultConfig {
versionCode cdvVersionCode ? : new BigInteger ( "" + privateHelpers . extractIntFromManifest ( "versionCode" ) )
applicationId privateHelpers . extractStringFromManifest ( "package" )
2021-07-06 14:38:28 +08:00
minSdkVersion cordovaConfig . MIN_SDK_VERSION
if ( cordovaConfig . MAX_SDK_VERSION ! = null ) {
maxSdkVersion cordovaConfig . MAX_SDK_VERSION
2019-04-06 12:28:25 +08:00
}
2021-07-06 14:38:28 +08:00
targetSdkVersion cordovaConfig . SDK_VERSION
compileSdkVersion cordovaConfig . SDK_VERSION
2017-04-05 06:18:46 +08:00
}
lintOptions {
2021-07-06 14:38:28 +08:00
abortOnError false
2017-04-05 06:18:46 +08:00
}
2021-07-27 00:26:42 +08:00
buildToolsVersion cordovaConfig . BUILD_TOOLS_VERSION
2017-04-05 06:18:46 +08:00
2018-09-12 19:52:11 +08:00
// 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.
2017-04-05 06:18:46 +08:00
if ( Boolean . valueOf ( cdvBuildMultipleApks ) ) {
2017-11-21 10:21:49 +08:00
flavorDimensions "default"
2017-04-05 06:18:46 +08:00
productFlavors {
2017-11-28 03:42:25 +08:00
armeabi {
versionCode defaultConfig . versionCode * 10 + 1
ndk {
abiFilters = [ "armeabi" ]
}
}
2017-04-05 06:18:46 +08:00
armv7 {
versionCode defaultConfig . versionCode * 10 + 2
ndk {
2017-11-28 03:42:25 +08:00
abiFilters = [ "armeabi-v7a" ]
}
}
arm64 {
versionCode defaultConfig . versionCode * 10 + 3
ndk {
abiFilters = [ "arm64-v8a" ]
2017-04-05 06:18:46 +08:00
}
}
x86 {
versionCode defaultConfig . versionCode * 10 + 4
ndk {
2017-11-28 03:42:25 +08:00
abiFilters = [ "x86" ]
2017-04-05 06:18:46 +08:00
}
}
2017-11-28 03:42:25 +08:00
x86_64 {
versionCode defaultConfig . versionCode * 10 + 5
2017-04-05 06:18:46 +08:00
ndk {
2017-11-28 03:42:25 +08:00
abiFilters = [ "x86_64" ]
2017-04-05 06:18:46 +08:00
}
}
}
2017-11-28 06:10:59 +08:00
} 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
}
2017-04-05 06:18:46 +08:00
}
compileOptions {
2017-11-16 03:39:32 +08:00
sourceCompatibility JavaVersion . VERSION_1_8
targetCompatibility JavaVersion . VERSION_1_8
2017-04-05 06:18:46 +08:00
}
if ( cdvReleaseSigningPropertiesFile ) {
signingConfigs {
release {
2017-11-29 06:59:50 +08:00
// These must be set or Gradle will complain (even if they are overridden).
keyAlias = ""
2021-04-13 18:13:01 +08:00
keyPassword = ""
2017-04-05 06:18:46 +08:00
storeFile = null
2021-04-13 18:13:01 +08:00
storePassword = ""
2017-04-05 06:18:46 +08:00
}
}
buildTypes {
release {
signingConfig signingConfigs . release
}
}
addSigningProps ( cdvReleaseSigningPropertiesFile , signingConfigs . release )
}
2018-09-26 15:29:31 +08:00
2017-04-05 06:18:46 +08:00
if ( cdvDebugSigningPropertiesFile ) {
addSigningProps ( cdvDebugSigningPropertiesFile , signingConfigs . debug )
}
2020-01-27 15:14:58 +08:00
sourceSets {
main . java . srcDirs + = 'src/main/kotlin'
}
2017-04-05 06:18:46 +08:00
}
/ *
* 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 {
2017-11-02 08:08:43 +08:00
implementation fileTree ( dir: 'libs' , include: '*.jar' )
2021-07-06 14:38:28 +08:00
implementation "androidx.appcompat:appcompat:${cordovaConfig.ANDROIDX_APP_COMPAT_VERSION}"
2020-01-27 15:14:58 +08:00
2021-07-06 14:38:28 +08:00
if ( cordovaConfig . IS_GRADLE_PLUGIN_KOTLIN_ENABLED ) {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${cordovaConfig.KOTLIN_VERSION}"
2020-01-27 15:14:58 +08:00
}
2017-04-05 06:18:46 +08:00
// SUB-PROJECT DEPENDENCIES START
debugCompile ( project ( path: ":CordovaLib" , configuration: "debug" ) )
releaseCompile ( project ( path: ":CordovaLib" , configuration: "release" ) )
// SUB-PROJECT DEPENDENCIES END
}
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 ) {
2021-07-06 14:38:28 +08:00
def filename = storeFile . getName ( ) . toLowerCase ( )
2017-04-05 06:18:46 +08:00
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 ( )
}
2020-01-16 07:40:54 +08:00
2021-07-06 14:38:28 +08:00
if ( cordovaConfig . IS_GRADLE_PLUGIN_GOOGLE_SERVICES_ENABLED ) {
2020-01-16 07:40:54 +08:00
apply plugin: 'com.google.gms.google-services'
}