mirror of
https://github.com/apache/cordova-android.git
synced 2026-05-30 00:00:04 +08:00
feat: support custom compileSdk setting (#1431)
* feat: support custom compileSdk setting * chore: apply suggestions from code review * chore: apply cdv-gradle-config-defaults.json suggestion * fix: set compile sdk when null * fix: move compileSdk null check to gradle * fix: compile sdk requirement warning & display in gradle per subproject Co-authored-by: Norman Breau <norman@nbsolutions.ca>
This commit is contained in:
@@ -44,6 +44,31 @@ module.exports.get_target = function (projectRoot) {
|
||||
return `android-${Math.max(userTargetSdkVersion, SDK_VERSION)}`;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} projectRoot
|
||||
* @returns {string} The android target in format "android-${target}"
|
||||
*/
|
||||
module.exports.get_compile = function (projectRoot) {
|
||||
const userTargetSdkVersion = getUserTargetSdkVersion(projectRoot) || SDK_VERSION;
|
||||
const userCompileSdkVersion = getUserCompileSdkVersion(projectRoot) || userTargetSdkVersion;
|
||||
|
||||
module.exports.isCompileSdkValid(userCompileSdkVersion, userTargetSdkVersion);
|
||||
|
||||
return userCompileSdkVersion;
|
||||
};
|
||||
|
||||
module.exports.isCompileSdkValid = (compileSdk, targetSdk) => {
|
||||
targetSdk = (targetSdk || SDK_VERSION);
|
||||
compileSdk = (compileSdk || targetSdk);
|
||||
const isValid = compileSdk >= targetSdk;
|
||||
|
||||
if (!isValid) {
|
||||
events.emit('warn', `The "android-compileSdkVersion" (${compileSdk}) should be greater than or equal to the "android-targetSdkVersion" (${targetSdk}).`);
|
||||
}
|
||||
|
||||
return isValid;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} projectRoot
|
||||
* @returns {number} target sdk or 0 if undefined
|
||||
@@ -61,6 +86,23 @@ function getUserTargetSdkVersion (projectRoot) {
|
||||
return isNaN(targetSdkVersion) ? 0 : targetSdkVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} projectRoot
|
||||
* @returns {number} target sdk or 0 if undefined
|
||||
*/
|
||||
function getUserCompileSdkVersion (projectRoot) {
|
||||
// If the repo config.xml file exists, find the desired compileSdkVersion.
|
||||
// We need to use the cordova project's config.xml here, since the platform
|
||||
// project's config.xml does not yet have the user's preferences when this
|
||||
// function is called during `Api.createPlatform`.
|
||||
const configFile = path.join(projectRoot, '../../config.xml');
|
||||
if (!fs.existsSync(configFile)) return 0;
|
||||
|
||||
const configParser = new ConfigParser(configFile);
|
||||
const compileSdkVersion = parseInt(configParser.getPreference('android-compileSdkVersion', 'android'), 10);
|
||||
return isNaN(compileSdkVersion) ? 0 : compileSdkVersion;
|
||||
}
|
||||
|
||||
module.exports.get_gradle_wrapper = function () {
|
||||
let androidStudioPath;
|
||||
let i = 0;
|
||||
|
||||
Reference in New Issue
Block a user