Use custom Gradle properties to read minSdkVersion value from config.xml (#655)

Co-authored-by: エリス <ellis.bryan@gmail.com>
Co-authored-by: Christopher J. Brody <chris.brody@gmail.com>
This commit is contained in:
Chris Brody 2019-02-12 20:11:32 -05:00 committed by GitHub
parent 719acd3ab1
commit 867da56e2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 16 deletions

View File

@ -46,11 +46,17 @@ class GradlePropertiesParser {
this.gradleFilePath = path.join(platformDir, 'gradle.properties'); this.gradleFilePath = path.join(platformDir, 'gradle.properties');
} }
configure () { configure (userConfigs) {
events.emit('verbose', '[Gradle Properties] Preparing Configuration'); events.emit('verbose', '[Gradle Properties] Preparing Configuration');
this._initializeEditor(); this._initializeEditor();
this._configureDefaults();
events.emit('verbose', '[Gradle Properties] Appending default configuration properties');
this._configureProperties(this._defaults);
events.emit('verbose', '[Gradle Properties] Appending custom configuration properties');
this._configureProperties(userConfigs);
this._save(); this._save();
} }
@ -69,18 +75,19 @@ class GradlePropertiesParser {
} }
/** /**
* Validate that defaults are set and set the missing defaults. * Validate that defaults or user configuration properties are set and
* set the missing items.
*/ */
_configureDefaults () { _configureProperties (properties) {
// Loop though Cordova default properties and set only if missing. // Iterate though the properties and set only if missing.
Object.keys(this._defaults).forEach(key => { Object.keys(properties).forEach(key => {
let value = this.gradleFile.get(key); let value = this.gradleFile.get(key);
if (!value) { if (!value) {
events.emit('verbose', `[Gradle Properties] Appended missing default: ${key}=${this._defaults[key]}`); events.emit('verbose', `[Gradle Properties] Appending configuration item: ${key}=${properties[key]}`);
this.gradleFile.set(key, this._defaults[key]); this.gradleFile.set(key, properties[key]);
} else if (value !== this._defaults[key]) { } else if (value !== properties[key]) {
events.emit('info', `[Gradle Properties] Detected Gradle property "${key}" with the value of "${value}", Cordova's recommended value is "${this._defaults[key]}"`); events.emit('info', `[Gradle Properties] Detected Gradle property "${key}" with the value of "${value}", Cordova's recommended value is "${properties[key]}"`);
} }
}); });
} }

View File

@ -43,8 +43,14 @@ module.exports.prepare = function (cordovaProject, options) {
this._config = updateConfigFilesFrom(cordovaProject.projectConfig, munger, this.locations); this._config = updateConfigFilesFrom(cordovaProject.projectConfig, munger, this.locations);
// Get the min SDK version from config.xml
const minSdkVersion = this._config.getPreference('android-minSdkVersion', 'android');
let gradlePropertiesUserConfig = {};
if (minSdkVersion) gradlePropertiesUserConfig.cdvMinSdkVersion = minSdkVersion;
let gradlePropertiesParser = new GradlePropertiesParser(this.locations.root); let gradlePropertiesParser = new GradlePropertiesParser(this.locations.root);
gradlePropertiesParser.configure(); gradlePropertiesParser.configure(gradlePropertiesUserConfig);
// Update own www dir with project's www assets and plugins' assets and js-files // Update own www dir with project's www assets and plugins' assets and js-files
return Q.when(updateWww(cordovaProject, this.locations)).then(function () { return Q.when(updateWww(cordovaProject, this.locations)).then(function () {

View File

@ -74,7 +74,7 @@ describe('Gradle Builder', () => {
}); });
}); });
describe('_configureDefaults method', () => { describe('_configureProperties method', () => {
let parser; let parser;
let emitSpy; let emitSpy;
@ -99,11 +99,11 @@ describe('Gradle Builder', () => {
get: getSpy get: getSpy
}; };
parser._configureDefaults(); parser._configureProperties(parser._defaults);
expect(getSpy).toHaveBeenCalled(); expect(getSpy).toHaveBeenCalled();
expect(setSpy).toHaveBeenCalled(); expect(setSpy).toHaveBeenCalled();
expect(emitSpy.calls.argsFor(0)[1]).toContain('Appended missing default'); expect(emitSpy.calls.argsFor(0)[1]).toContain('Appending configuration item');
}); });
it('should not detect missing defaults and not call set.', () => { it('should not detect missing defaults and not call set.', () => {
@ -115,7 +115,7 @@ describe('Gradle Builder', () => {
get: getSpy get: getSpy
}; };
parser._configureDefaults(); parser._configureProperties(parser._defaults);
expect(getSpy).toHaveBeenCalled(); expect(getSpy).toHaveBeenCalled();
expect(setSpy).not.toHaveBeenCalled(); expect(setSpy).not.toHaveBeenCalled();
@ -130,7 +130,7 @@ describe('Gradle Builder', () => {
get: getSpy get: getSpy
}; };
parser._configureDefaults(); parser._configureProperties(parser._defaults);
expect(getSpy).toHaveBeenCalled(); expect(getSpy).toHaveBeenCalled();
expect(setSpy).not.toHaveBeenCalled(); expect(setSpy).not.toHaveBeenCalled();