From ce0eabb65487cf3547e31769053460d4df33487a Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Mon, 15 Jun 2015 15:56:36 +0300 Subject: [PATCH] Copy styles for supported Android versions Inside tns-android resources, there are values-v directories. Currently we were copying only values-v21 in case the current project targets API_LEVEL 21. Instead we should copy it when the project targets API_LEVEL 21 or upper (in case there's no newer directory, for example values-v22). For example: * `$ tns platform add android --sdk 22` - should copy values and values-v21 in your platforms/android/res dir * `$ tns platform add android --sdk 21` - should copy values and values-v21 in your platforms/android/res dir * `$ tns platform add android --sdk MNC` - should copy values and values-v21 in your platforms/android/res dir * `$ tns platform add android --sdk 17` - should copy values in your platforms/android/res dir --- lib/services/android-project-service.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/services/android-project-service.ts b/lib/services/android-project-service.ts index 584b77fb3d..9dfb88947e 100644 --- a/lib/services/android-project-service.ts +++ b/lib/services/android-project-service.ts @@ -106,8 +106,22 @@ class AndroidProjectService implements IPlatformProjectService { this.$fs.createDirectory(resDestinationDir).wait(); let versionDirName = AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX + versionNumber; let directoriesToCopy = [AndroidProjectService.VALUES_DIRNAME]; - if(this.$fs.exists(path.join(resSourceDir, versionDirName)).wait()) { - directoriesToCopy.push(versionDirName); + let directoriesInResFolder = this.$fs.readDirectory(resSourceDir).wait(); + let integerFrameworkVersion = parseInt(versionNumber); + let versionDir = _.find(directoriesInResFolder, dir => dir === versionDirName) || + _(directoriesInResFolder) + .map(dir => { + return { + dirName: dir, + sdkNum: parseInt(dir.substr(AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX.length)) + } + }) + .filter(dir => dir.dirName.match(AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX) && dir.sdkNum && (!integerFrameworkVersion || (integerFrameworkVersion >= dir.sdkNum))) + .max(dir => dir.sdkNum) + .dirName; + + if(versionDir) { + directoriesToCopy.push(versionDir); } this.copy(resDestinationDir, resSourceDir, directoriesToCopy.join(" "), "-R").wait();