You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2014/09/05 20:14:42 UTC
[37/50] git commit: CB-7114 Android: add support of min/max/target
SDK to config.xml
CB-7114 Android: add support of min/max/target SDK to config.xml
github: close #56
Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/e86fab8a
Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/e86fab8a
Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/e86fab8a
Branch: refs/heads/master
Commit: e86fab8ad0934a77620888301801d1d415392812
Parents: 867a01e
Author: sgrebnov <v-...@microsoft.com>
Authored: Thu Jul 10 12:09:03 2014 +0400
Committer: Anis Kadri <an...@apache.org>
Committed: Fri Sep 5 11:12:19 2014 -0700
----------------------------------------------------------------------
cordova-lib/spec-cordova/ConfigParser.spec.js | 5 +++++
cordova-lib/spec-cordova/test-config.xml | 3 ++-
cordova-lib/src/configparser/ConfigParser.js | 6 +++++-
cordova-lib/src/cordova/metadata/android_parser.js | 15 +++++++++++++++
4 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e86fab8a/cordova-lib/spec-cordova/ConfigParser.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/ConfigParser.spec.js b/cordova-lib/spec-cordova/ConfigParser.spec.js
index 9c8c8e6..7028034 100644
--- a/cordova-lib/spec-cordova/ConfigParser.spec.js
+++ b/cordova-lib/spec-cordova/ConfigParser.spec.js
@@ -80,6 +80,11 @@ describe('config.xml parser', function () {
expect(cfg.getPreference('zimzooo!')).toEqual(undefined);
});
});
+ describe('platform specific preference', function() {
+ it('should get value of existing platform specific preference', function() {
+ expect(cfg.getPreference('android-minSdkVersion', 'android')).toEqual('10');
+ });
+ });
describe('feature',function(){
it('should read feature id list', function() {
var expectedList = [
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e86fab8a/cordova-lib/spec-cordova/test-config.xml
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/test-config.xml b/cordova-lib/spec-cordova/test-config.xml
index 3308ae0..27838b7 100644
--- a/cordova-lib/spec-cordova/test-config.xml
+++ b/cordova-lib/spec-cordova/test-config.xml
@@ -22,6 +22,7 @@
<icon id="logo" src="logo.png" width="255" height="255" />
<platform name="android">
<icon src="logo-android.png" width="255" height="255" density="mdpi" />
+ <preference name="android-minSdkVersion" value="10" />
</platform>
<!-- Features -->
@@ -45,4 +46,4 @@
<feature name="A simple feature">
<param name="id" value="org.apache.cordova.justafeature" />
</feature>
-</widget>
\ No newline at end of file
+</widget>
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e86fab8a/cordova-lib/src/configparser/ConfigParser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/configparser/ConfigParser.js b/cordova-lib/src/configparser/ConfigParser.js
index 75f798b..da6376e 100644
--- a/cordova-lib/src/configparser/ConfigParser.js
+++ b/cordova-lib/src/configparser/ConfigParser.js
@@ -117,8 +117,12 @@ ConfigParser.prototype = {
author: function() {
return getNodeTextSafe(this.doc.find('author'));
},
- getPreference: function(name) {
+ getPreference: function(name, platform) {
var preferences = this.doc.findall('preference');
+ if (platform) { // include platform specific preferences
+ preferences = preferences.concat(
+ this.doc.findall('platform[@name=\'' + platform + '\']/preference'));
+ }
var ret = null;
preferences.forEach(function (preference) {
// Take the last one that matches.
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e86fab8a/cordova-lib/src/cordova/metadata/android_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/android_parser.js b/cordova-lib/src/cordova/metadata/android_parser.js
index 12a6d1f..9f338dd 100644
--- a/cordova-lib/src/cordova/metadata/android_parser.js
+++ b/cordova-lib/src/cordova/metadata/android_parser.js
@@ -23,6 +23,7 @@
var fs = require('fs'),
path = require('path'),
+ et = require('elementtree'),
xml = require('../../util/xml-helpers'),
util = require('../util'),
events = require('../../events'),
@@ -261,6 +262,20 @@ module.exports.prototype = {
delete act.attrib["android:launchMode"]; // use Android default value (standard)
}
+ // Set min/max/target SDK version
+ //<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" ... />
+ var usesSdk = manifest.getroot().find('./uses-sdk');
+ ['minSdkVersion', 'maxSdkVersion', 'targetSdkVersion'].forEach(function(sdkPrefName) {
+ var sdkPrefValue = config.getPreference('android-' + sdkPrefName, 'android');
+ if (!sdkPrefValue) return;
+
+ if (!usesSdk) { // if there is no required uses-sdk element, we should create it first
+ usesSdk = new et.Element('uses-sdk');
+ manifest.getroot().append(usesSdk);
+ }
+ usesSdk.attrib['android:' + sdkPrefName] = sdkPrefValue;
+ });
+
// Write out AndroidManifest.xml
fs.writeFileSync(this.manifest, manifest.write({indent: 4}), 'utf-8');