| /* |
| 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. |
| */ |
| |
| // GENERATED FILE! DO NOT EDIT! |
| |
| import java.util.regex.Pattern |
| import groovy.swing.SwingBuilder |
| |
| ext.cordova = {} |
| apply from: 'cordova.gradle', to: ext.cordova |
| apply plugin: 'android' |
| |
| buildscript { |
| repositories { |
| mavenCentral() |
| } |
| |
| // 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 |
| if (gradle.gradleVersion >= "2.2") { |
| dependencies { |
| classpath 'com.android.tools.build:gradle:1.0.0+' |
| } |
| } else if (gradle.gradleVersion >= "2.1") { |
| dependencies { |
| classpath 'com.android.tools.build:gradle:0.14.0+' |
| } |
| } else { |
| dependencies { |
| classpath 'com.android.tools.build:gradle:0.12.0+' |
| } |
| } |
| } |
| |
| task wrapper(type: Wrapper) { |
| gradleVersion = '2.2.1' |
| } |
| |
| ext.multiarch=false |
| |
| // PLUGIN GRADLE EXTENSIONS START |
| // PLUGIN GRADLE EXTENSIONS END |
| |
| 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'] |
| } |
| } |
| |
| defaultConfig { |
| versionCode Integer.parseInt(System.env.ANDROID_VERSION_CODE ?: ("" + getIntFromManifest("versionCode") + "0")) |
| if (System.env.ANDROID_MIN_SDK_VERSION) { |
| minSdkVersion Integer.parseInt(System.env.ANDROID_MIN_SDK_VERSION) |
| } |
| } |
| |
| compileSdkVersion cordova.cordovaSdkVersion |
| buildToolsVersion cordova.cordovaBuildToolsVersion |
| |
| if (multiarch || System.env.BUILD_MULTIPLE_APKS) { |
| productFlavors { |
| armv7 { |
| versionCode System.env.ANDROID_VERSION_CODE ?: defaultConfig.versionCode + 2 |
| ndk { |
| abiFilters "armeabi-v7a", "" |
| } |
| } |
| x86 { |
| versionCode System.env.ANDROID_VERSION_CODE ?: defaultConfig.versionCode + 4 |
| ndk { |
| abiFilters "x86", "" |
| } |
| } |
| all { |
| ndk { |
| abiFilters "all", "" |
| } |
| } |
| } |
| } else if (!System.env.ANDROID_VERSION_CODE) { |
| def minSdkVersion = Integer.parseInt(System.env.ANDROID_MIN_SDK_VERSION ?: "" + getIntFromManifest("minSdkVersion")) |
| // Vary versionCode by the two most common API levels: |
| // 14 is ICS, which is the lowest API level for many apps. |
| // 20 is Lollipop, which is the lowest API level for the updatable system webview. |
| if (minSdkVersion >= 20) { |
| defaultConfig.versionCode += 9 |
| } else if (minSdkVersion >= 14) { |
| defaultConfig.versionCode += 8 |
| } |
| } |
| |
| compileOptions { |
| sourceCompatibility JavaVersion.VERSION_1_6 |
| targetCompatibility JavaVersion.VERSION_1_6 |
| } |
| |
| if (System.env.RELEASE_SIGNING_PROPERTIES_FILE) { |
| 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(System.env.RELEASE_SIGNING_PROPERTIES_FILE, signingConfigs.release) |
| } |
| if (System.env.DEBUG_SIGNING_PROPERTIES_FILE) { |
| addSigningProps(System.env.DEBUG_SIGNING_PROPERTIES_FILE, signingConfigs.debug) |
| } |
| } |
| |
| dependencies { |
| compile fileTree(dir: 'libs', include: '*.jar') |
| // SUB-PROJECT DEPENDENCIES START |
| // SUB-PROJECT DEPENDENCIES END |
| } |
| |
| |
| def promptForPassword(msg) { |
| if (System.console() == null) { |
| def ret = null |
| new SwingBuilder().edt { |
| dialog(modal: true, title: 'Enter password', alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) { |
| vbox { |
| label(text: msg) |
| def input = passwordField() |
| button(defaultButton: true, text: 'OK', actionPerformed: { |
| ret = input.password; |
| dispose(); |
| }) |
| } |
| } |
| } |
| if (!ret) { |
| throw new GradleException('User canceled build') |
| } |
| return new String(ret) |
| } else { |
| return System.console().readPassword('\n' + msg); |
| } |
| } |
| |
| def promptForReleaseKeyPassword() { |
| if (!System.env.RELEASE_SIGNING_PROPERTIES_FILE) { |
| return; |
| } |
| if ('__unset'.equals(android.signingConfigs.release.storePassword)) { |
| android.signingConfigs.release.storePassword = promptForPassword('Enter key store password: ') |
| } |
| if ('__unset'.equals(android.signingConfigs.release.keyPassword)) { |
| android.signingConfigs.release.keyPassword = promptForPassword('Enter key password: '); |
| } |
| } |
| |
| gradle.taskGraph.whenReady { taskGraph -> |
| taskGraph.getAllTasks().each() { task -> |
| if (task.name == 'validateReleaseSigning') { |
| promptForReleaseKeyPassword() |
| } |
| } |
| } |
| |
| def getIntFromManifest(name) { |
| def manifestFile = file(android.sourceSets.main.manifest.srcFile) |
| def pattern = Pattern.compile(name + "=\"(\\d+)\"") |
| def matcher = pattern.matcher(manifestFile.getText()) |
| matcher.find() |
| return Integer.parseInt(matcher.group(1)) |
| } |
| |
| def ensureValueExists(filePath, props, key) { |
| if (props.get(key) == null) { |
| throw new GradleException(filePath + ': Missing key required "' + key + '"') |
| } |
| return props.get(key) |
| } |
| |
| def addSigningProps(propsFilePath, signingConfig) { |
| def propsFile = file(propsFilePath) |
| def props = new Properties() |
| propsFile.withReader { reader -> |
| props.load(reader) |
| } |
| def storeFile = new File(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 = ensureValueExists(propsFilePath, props, 'keyAlias') |
| signingConfig.keyPassword = props.get('keyPassword', signingConfig.keyPassword) |
| signingConfig.storeFile = storeFile |
| signingConfig.storePassword = props.get('storePassword', signingConfig.storePassword) |
| def storeType = props.get('storeType') |
| if (!storeType) { |
| def filename = storeFile.getName().toLowerCase(); |
| if (filename.endsWith('.p12') || filename.endsWith('.pfx')) { |
| storeType = 'pkcs12' |
| } |
| } |
| if (storeType) { |
| signingConfig.storeType = storeType |
| } |
| } |
| |
| if (file('build-extras.gradle').exists()) { |
| apply from: 'build-extras.gradle' |
| } |