Skip to content

Commit cd2ab1d

Browse files
Clean res dir of Android project
Currently when creating Android project, we copy the full src directory from android framework. After that we execute `copyResValues` which is totally not needed as we've already copied everything. Instead we have to clean the copied values as currently if you target android sdk 19 for example, we'll still copy res/values-v21 directory in the project and the build will fail. Check all `values-v<SDK>` directories and remove the ones that have higher version than currently targeted one.
1 parent 16647fc commit cd2ab1d

File tree

1 file changed

+13
-21
lines changed

1 file changed

+13
-21
lines changed

lib/services/android-project-service.ts

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -105,37 +105,29 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
105105
this.copy(projectRoot, frameworkDir, "build.gradle settings.gradle", "-f");
106106
}
107107

108-
this.copyResValues(projectRoot, frameworkDir, versionNumber).wait();
108+
this.cleanResValues(versionNumber).wait();
109109

110110
}).future<any>()();
111111
}
112112

113-
private copyResValues(projectRoot: string, frameworkDir: string, versionNumber: string): IFuture<void> {
113+
private cleanResValues(versionNumber: string): IFuture<void> {
114114
return (() => {
115-
let resSourceDir = path.join(frameworkDir, "src", "main", "res");
116115
let resDestinationDir = this.getAppResourcesDestinationDirectoryPath().wait();
117-
this.$fs.createDirectory(resDestinationDir).wait();
118-
let versionDirName = AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX + versionNumber;
119-
let directoriesToCopy = [AndroidProjectService.VALUES_DIRNAME];
120-
let directoriesInResFolder = this.$fs.readDirectory(resSourceDir).wait();
121-
let integerFrameworkVersion = parseInt(versionNumber);
122-
let versionDir = _.find(directoriesInResFolder, dir => dir === versionDirName) ||
123-
_(directoriesInResFolder)
124-
.map(dir => {
125-
return {
116+
let directoriesInResFolder = this.$fs.readDirectory(resDestinationDir).wait();
117+
let integerFrameworkVersion = parseInt(versionNumber);
118+
let directoriesToClean = directoriesInResFolder
119+
.map(dir => { return {
126120
dirName: dir,
127121
sdkNum: parseInt(dir.substr(AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX.length))
128122
};
129123
})
130-
.filter(dir => dir.dirName.match(AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX) && dir.sdkNum && (!integerFrameworkVersion || (integerFrameworkVersion >= dir.sdkNum)))
131-
.max(dir => dir.sdkNum)
132-
.dirName;
133-
134-
if(versionDir) {
135-
directoriesToCopy.push(versionDir);
136-
}
137-
138-
this.copy(resDestinationDir, resSourceDir, directoriesToCopy.join(" "), "-Rf");
124+
.filter(dir => dir.dirName.match(AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX)
125+
&& dir.sdkNum
126+
&& (!integerFrameworkVersion || (integerFrameworkVersion < dir.sdkNum)))
127+
.map(dir => path.join(resDestinationDir, dir.dirName));
128+
this.$logger.trace("Directories to clean:");
129+
this.$logger.trace(directoriesToClean);
130+
Future.wait(_.map(directoriesToClean, dir => this.$fs.deleteDirectory(dir)));
139131
}).future<void>()();
140132
}
141133

0 commit comments

Comments
 (0)