Skip to content

Commit 45e950d

Browse files
author
IceBuildUser
committed
Merge remote-tracking branch 'origin/release' into HEAD
2 parents b5d9e1e + a24b80b commit 45e950d

File tree

3 files changed

+33
-67
lines changed

3 files changed

+33
-67
lines changed

lib/services/android-project-service.ts

Lines changed: 31 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import * as semver from "semver";
88
import * as projectServiceBaseLib from "./platform-project-service-base";
99
import * as androidDebugBridgePath from "../common/mobile/android/android-debug-bridge";
1010
import {AndroidDeviceHashService} from "../common/mobile/android/android-device-hash-service";
11+
import {EOL} from "os";
12+
import { createGUID } from "../common/helpers";
1113

1214
export class AndroidProjectService extends projectServiceBaseLib.PlatformProjectServiceBase implements IPlatformProjectService {
1315
private static VALUES_DIRNAME = "values";
@@ -233,12 +235,8 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
233235
}
234236
this.spawn(gradleBin, buildOptions, { stdio: "inherit", cwd: this.platformData.projectRoot }).wait();
235237
} else {
236-
this.checkAnt().wait();
237-
238-
let args = this.getAntArgs(this.$options.release ? "release" : "debug", projectRoot);
239-
this.spawn('ant', args).wait();
240-
241-
this.platformData.deviceBuildOutputPath = path.join(this.platformData.projectRoot, "bin");
238+
this.$errors.failWithoutHelp("Cannot complete build because this project is ANT-based." + EOL +
239+
"Run `tns platform remove android && tns platform add android` to switch to Gradle and try again.");
242240
}
243241
}).future<void>()();
244242
}
@@ -274,31 +272,14 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
274272
return (() => {
275273
let originalAndroidManifestFilePath = path.join(this.$projectData.appResourcesDirectoryPath, this.$devicePlatformsConstants.Android, this.platformData.configurationFileName),
276274
hasAndroidManifestInAppResources = this.$fs.exists(originalAndroidManifestFilePath).wait(),
277-
shouldExtractDefaultManifest = !hasAndroidManifestInAppResources,
278-
isAndroidManifestBackedUp = false;
279-
280-
if(hasAndroidManifestInAppResources) {
281-
let isFileCorrect = this.isAndroidManifestFileCorrect(originalAndroidManifestFilePath).wait();
282-
if(!isFileCorrect) {
283-
shouldExtractDefaultManifest = true;
284-
isAndroidManifestBackedUp = true;
285-
this.backupOriginalAndroidManifest(originalAndroidManifestFilePath).wait();
286-
}
287-
}
275+
shouldExtractDefaultManifest = !hasAndroidManifestInAppResources || !this.isAndroidManifestFileCorrect(originalAndroidManifestFilePath).wait();
288276

289277
// In case we should extract the manifest from default template, but for some reason we cannot, break the execution,
290278
// so the original file from Android runtime will be used.
291279
if(shouldExtractDefaultManifest && !this.extractAndroidManifestFromDefaultTemplate(originalAndroidManifestFilePath).wait()) {
292-
// now revert back
293-
this.revertBackupOfOriginalAndroidManifest(originalAndroidManifestFilePath).wait();
294280
return;
295281
}
296282

297-
if(isAndroidManifestBackedUp) {
298-
this.$logger.warn(`Your ${this.platformData.configurationFileName} in app/App_Resources/Android will be replaced by the default one from hello-world template.`);
299-
this.$logger.printMarkdown(`The original file will be moved to \`${this.configurationFileBackupName}\`. Merge it **manually** with the new \`${this.platformData.configurationFileName}\` in your app/App_Resources/Android.`);
300-
}
301-
302283
// Overwrite the AndroidManifest from runtime.
303284
this.$fs.copyFile(originalAndroidManifestFilePath, this.platformData.configurationFilePath).wait();
304285
}).future<void>()();
@@ -416,32 +397,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
416397
return this.$childProcess.spawnFromEvent(command, args, "close", opts || { stdio: "inherit"});
417398
}
418399

419-
private getAntArgs(configuration: string, projectRoot: string): string[] {
420-
let args = [configuration, "-f", path.join(projectRoot, "build.xml")];
421-
if(configuration === "release") {
422-
if(this.$options.keyStorePath) {
423-
args = args.concat(["-Dkey.store", path.resolve(this.$options.keyStorePath)]);
424-
}
425-
426-
if(this.$options.keyStorePassword) {
427-
args = args.concat(["-Dkey.store.password", this.$options.keyStorePassword]);
428-
}
429-
430-
if(this.$options.keyStoreAlias) {
431-
args = args.concat(["-Dkey.alias", this.$options.keyStoreAlias]);
432-
}
433-
434-
if(this.$options.keyStoreAliasPassword) {
435-
args = args.concat(["-Dkey.alias.password", this.$options.keyStoreAliasPassword]);
436-
}
437-
}
438-
439-
// metadata generation support
440-
args = args.concat(["-Dns.resources", path.join(__dirname, "../../resources/tools")]);
441-
442-
return args;
443-
}
444-
445400
private validatePackageName(packageName: string): void {
446401
//Make the package conform to Java package types
447402
//Enforce underscore limitation
@@ -483,16 +438,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
483438
}).future<string>()();
484439
}
485440

486-
private checkAnt(): IFuture<void> {
487-
return (() => {
488-
try {
489-
this.$childProcess.exec("ant -version").wait();
490-
} catch(error) {
491-
this.$errors.fail("Error executing commands 'ant', make sure you have ant installed and added to your PATH.");
492-
}
493-
}).future<void>()();
494-
}
495-
496441
private symlinkDirectory(directoryName: string, projectRoot: string, frameworkDir: string): IFuture<void> {
497442
return (() => {
498443
this.$fs.createDirectory(path.join(projectRoot, directoryName)).wait();
@@ -533,20 +478,32 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
533478
}).future<boolean>()();
534479
}
535480

536-
private get configurationFileBackupName(): string {
537-
return this.platformData.configurationFileName + ".backup";
481+
private _configurationFileBackupName: string;
482+
483+
private getConfigurationFileBackupName(originalAndroidManifestFilePath: string): IFuture<string> {
484+
return (() => {
485+
if(!this._configurationFileBackupName) {
486+
let defaultBackupName = this.platformData.configurationFileName + ".backup";
487+
if(this.$fs.exists(path.join(path.dirname(originalAndroidManifestFilePath), defaultBackupName)).wait()) {
488+
defaultBackupName += `_${createGUID(false)}`;
489+
}
490+
this._configurationFileBackupName = defaultBackupName;
491+
}
492+
493+
return this._configurationFileBackupName;
494+
}).future<string>()();
538495
}
539496

540497
private backupOriginalAndroidManifest(originalAndroidManifestFilePath: string): IFuture<void> {
541498
return (() => {
542-
let newPathForOriginalManifest = path.join(path.dirname(originalAndroidManifestFilePath), this.configurationFileBackupName);
499+
let newPathForOriginalManifest = path.join(path.dirname(originalAndroidManifestFilePath), this.getConfigurationFileBackupName(originalAndroidManifestFilePath).wait());
543500
shell.mv(originalAndroidManifestFilePath, newPathForOriginalManifest);
544501
}).future<void>()();
545502
}
546503

547504
private revertBackupOfOriginalAndroidManifest(originalAndroidManifestFilePath: string): IFuture<void> {
548505
return (() => {
549-
let pathToBackupFile = path.join(path.dirname(originalAndroidManifestFilePath), this.configurationFileBackupName);
506+
let pathToBackupFile = path.join(path.dirname(originalAndroidManifestFilePath), this.getConfigurationFileBackupName(originalAndroidManifestFilePath).wait());
550507
if(this.$fs.exists(pathToBackupFile).wait()) {
551508
this.$logger.trace(`Could not extract ${this.platformData.configurationFileName} from default template. Reverting the change of your app/App_Resources/${this.platformData.configurationFileName}.`);
552509
shell.mv(pathToBackupFile, originalAndroidManifestFilePath);
@@ -558,19 +515,29 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
558515
return ((): boolean => {
559516
let defaultTemplatePath = this.$projectTemplatesService.defaultTemplatePath.wait();
560517
let templateAndroidManifest = path.join(defaultTemplatePath, constants.APP_RESOURCES_FOLDER_NAME, this.$devicePlatformsConstants.Android, this.platformData.configurationFileName);
518+
let alreadyHasAndroidManifest = this.$fs.exists(originalAndroidManifestFilePath).wait();
561519
if (this.$fs.exists(templateAndroidManifest).wait()) {
562520
this.$logger.trace(`${originalAndroidManifestFilePath} is missing. Upgrading the source of the project with one from the new project template. Copy ${templateAndroidManifest} to ${originalAndroidManifestFilePath}`);
563521
try {
522+
if(alreadyHasAndroidManifest) {
523+
this.backupOriginalAndroidManifest(originalAndroidManifestFilePath).wait();
524+
}
564525
this.$fs.copyFile(templateAndroidManifest, originalAndroidManifestFilePath).wait();
565526
} catch(e) {
566527
this.$logger.trace(`Copying template's ${this.platformData.configurationFileName} failed. `, e);
528+
this.revertBackupOfOriginalAndroidManifest(originalAndroidManifestFilePath).wait();
567529
return false;
568530
}
569531
} else {
570532
this.$logger.trace(`${originalAndroidManifestFilePath} is missing but the template ${templateAndroidManifest} is missing too, can not upgrade ${this.platformData.configurationFileName}.`);
571533
return false;
572534
}
573535

536+
if(alreadyHasAndroidManifest) {
537+
this.$logger.warn(`Your ${this.platformData.configurationFileName} in app/App_Resources/Android will be replaced by the default one from hello-world template.`);
538+
this.$logger.printMarkdown(`The original file will be moved to \`${this.getConfigurationFileBackupName(originalAndroidManifestFilePath).wait()}\`. Merge it **manually** with the new \`${this.platformData.configurationFileName}\` in your app/App_Resources/Android.`);
539+
}
540+
574541
this.interpolateConfigurationFile().wait();
575542
return true;
576543
}).future<boolean>()();

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"gulp": "3.9.0",
4444
"iconv-lite": "0.4.11",
4545
"inquirer": "0.9.0",
46-
"ios-sim-portable": "~1.0.19",
46+
"ios-sim-portable": "~1.0.20",
4747
"lockfile": "1.0.1",
4848
"lodash": "3.10.0",
4949
"log4js": "0.6.26",
@@ -62,7 +62,6 @@
6262
"plist-merge-patch": "0.0.9",
6363
"plistlib": "0.2.1",
6464
"progress-stream": "1.1.1",
65-
"prompt": "https://github.com/Icenium/prompt/tarball/master",
6665
"properties-parser": "0.2.3",
6766
"ref": "https://github.com/icenium/ref/tarball/v1.1.3.1",
6867
"ref-struct": "https://github.com/telerik/ref-struct/tarball/v1.0.2.1",

0 commit comments

Comments
 (0)