From 08e3902473ea5f3d3b5eec68f9ae4f44e6f28b3b Mon Sep 17 00:00:00 2001 From: plamen5kov Date: Thu, 2 Nov 2017 17:42:40 +0200 Subject: [PATCH 1/5] update resource output path --- index.js | 15 ++++++-- projectHelpers.js | 22 ++++++++--- .../android/project-snapshot-generator.js | 38 +++++++------------ 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/index.js b/index.js index 62d1ed5c..80cc652c 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,15 @@ const path = require("path"); const { existsSync } = require("fs"); +const semver = require("semver"); -const { getPackageJson, getProjectDir, isAngular } = require("./projectHelpers"); +const { getPackageJson, getProjectDir, isAngular, getAndroidRuntimeVersion } = require("./projectHelpers"); const PROJECT_DIR = getProjectDir({ nestingLvl: 2 }); const APP_DIR = path.join(PROJECT_DIR, "app"); Object.assign(exports, require('./plugins')); -if (isAngular({projectDir: PROJECT_DIR})) { +if (isAngular({ projectDir: PROJECT_DIR })) { Object.assign(exports, require('./plugins/angular')); } @@ -31,7 +32,15 @@ exports.getAppPath = platform => { return `platforms/ios/${sanitizedName}/app`; } else if (/android/i.test(platform)) { - return path.join(PROJECT_DIR, "platforms/android/src/main/assets/app"); + const androidPackageVersion = getAndroidRuntimeVersion(PROJECT_DIR); + const RESOURCES_PATH = "src/main/assets/app"; + const PROJECT_ROOT_PATH = "platforms/android"; + + const appPath = semver.lt(androidPackageVersion, "3.4.0") ? + path.join(PROJECT_ROOT_PATH, RESOURCES_PATH) : + path.join(PROJECT_ROOT_PATH, "app", RESOURCES_PATH); + + return path.join(PROJECT_DIR, appPath); } else { throw new Error(`Invalid platform: ${platform}`); } diff --git a/projectHelpers.js b/projectHelpers.js index 37268f0a..79261750 100644 --- a/projectHelpers.js +++ b/projectHelpers.js @@ -1,25 +1,35 @@ const path = require("path"); const fs = require("fs"); -const isTypeScript = ({projectDir, packageJson} = {}) => { +const isTypeScript = ({ projectDir, packageJson } = {}) => { packageJson = packageJson || getPackageJson(projectDir); return ( packageJson.dependencies && packageJson.dependencies.hasOwnProperty("typescript") ) || ( - packageJson.devDependencies && - packageJson.devDependencies.hasOwnProperty("typescript") - ) || isAngular({packageJson}); + packageJson.devDependencies && + packageJson.devDependencies.hasOwnProperty("typescript") + ) || isAngular({ packageJson }); }; -const isAngular = ({projectDir, packageJson} = {}) => { +const isAngular = ({ projectDir, packageJson } = {}) => { packageJson = packageJson || getPackageJson(projectDir); return packageJson.dependencies && Object.keys(packageJson.dependencies) .some(dependency => /^@angular\b/.test(dependency)); }; +const getAndroidRuntimeVersion = (projectDir) => { + try { + const projectPackageJSON = getPackageJson(projectDir); + + return projectPackageJSON["nativescript"]["tns-android"]["version"]; + } catch (e) { + return null; + } +} + const getPackageJson = projectDir => { const packageJsonPath = getPackageJsonPath(projectDir); return JSON.parse(fs.readFileSync(packageJsonPath, "utf8")); @@ -29,7 +39,6 @@ const writePackageJson = (content, projectDir) => { const packageJsonPath = getPackageJsonPath(projectDir); fs.writeFileSync(packageJsonPath, JSON.stringify(content, null, 2)) } - const getProjectDir = ({ nestingLvl } = { nestingLvl: 0 }) => { // INIT_CWD is available since npm 5.4 const initCwd = process.env.INIT_CWD; @@ -62,4 +71,5 @@ module.exports = { writePackageJson, getPackageJson, getProjectDir, + getAndroidRuntimeVersion, }; diff --git a/snapshot/android/project-snapshot-generator.js b/snapshot/android/project-snapshot-generator.js index ed706f44..7456fd87 100644 --- a/snapshot/android/project-snapshot-generator.js +++ b/snapshot/android/project-snapshot-generator.js @@ -11,7 +11,7 @@ const { createDirectory, getJsonFile, } = require("./utils"); -const { getPackageJson } = require("../../projectHelpers"); +const { getPackageJson, getAndroidRuntimeVersion } = require("../../projectHelpers"); const MIN_ANDROID_RUNTIME_VERSION = "3.0.0"; const VALID_ANDROID_RUNTIME_TAGS = Object.freeze(["next", "rc"]); @@ -25,10 +25,10 @@ const resolveRelativePath = (path) => { return null; }; -function ProjectSnapshotGenerator (options) { +function ProjectSnapshotGenerator(options) { this.options = options = options || {}; - options.projectRoot = resolveRelativePath(options.projectRoot) || process.cwd(); + options.projectRoot = resolveRelativePath(options.projectRoot) || process.cwd(); console.log("Project root: " + options.projectRoot); console.log("Snapshots build directory: " + this.getBuildPath()); @@ -37,15 +37,15 @@ function ProjectSnapshotGenerator (options) { } module.exports = ProjectSnapshotGenerator; -ProjectSnapshotGenerator.calculateBuildPath = function(projectRoot) { +ProjectSnapshotGenerator.calculateBuildPath = function (projectRoot) { return join(projectRoot, "platforms/android/snapshot-build/build"); } -ProjectSnapshotGenerator.prototype.getBuildPath = function() { +ProjectSnapshotGenerator.prototype.getBuildPath = function () { return ProjectSnapshotGenerator.calculateBuildPath(this.options.projectRoot); } -ProjectSnapshotGenerator.cleanSnapshotArtefacts = function(projectRoot) { +ProjectSnapshotGenerator.cleanSnapshotArtefacts = function (projectRoot) { const platformPath = join(projectRoot, "platforms/android"); // Remove blob files from prepared folder @@ -55,7 +55,7 @@ ProjectSnapshotGenerator.cleanSnapshotArtefacts = function(projectRoot) { shelljs.rm("-rf", join(platformPath, "configurations/", SnapshotGenerator.SNAPSHOT_PACKAGE_NANE)); } -ProjectSnapshotGenerator.installSnapshotArtefacts = function(projectRoot) { +ProjectSnapshotGenerator.installSnapshotArtefacts = function (projectRoot) { const buildPath = ProjectSnapshotGenerator.calculateBuildPath(projectRoot); const platformPath = join(projectRoot, "platforms/android"); const assetsPath = join(platformPath, "src/main/assets"); @@ -139,16 +139,16 @@ const getV8VersionsMap = runtimeVersion => } }); -ProjectSnapshotGenerator.prototype.getV8Version = function(generationOptions) { +ProjectSnapshotGenerator.prototype.getV8Version = function (generationOptions) { return new Promise((resolve, reject) => { const maybeV8Version = generationOptions.v8Version; if (maybeV8Version) { return resolve(maybeV8Version); } - const runtimeVersion = this.getAndroidRuntimeVersion(); + const runtimeVersion = this.getAndroidRuntimeVersion(this.options.projectRoot); getV8VersionsMap(runtimeVersion) - .then(({ versionsMap, latest}) => { + .then(({ versionsMap, latest }) => { const v8Version = findV8Version(runtimeVersion, versionsMap); if (!v8Version && !latest) { @@ -165,8 +165,8 @@ ProjectSnapshotGenerator.prototype.getV8Version = function(generationOptions) { }); } -ProjectSnapshotGenerator.prototype.validateAndroidRuntimeVersion = function() { - const currentRuntimeVersion = this.getAndroidRuntimeVersion(); +ProjectSnapshotGenerator.prototype.validateAndroidRuntimeVersion = function () { + const currentRuntimeVersion = getAndroidRuntimeVersion(this.options.projectRoot); if (!currentRuntimeVersion || !existsSync(join(this.options.projectRoot, "platforms/android"))) { @@ -182,17 +182,7 @@ ProjectSnapshotGenerator.prototype.validateAndroidRuntimeVersion = function() { } } -ProjectSnapshotGenerator.prototype.getAndroidRuntimeVersion = function() { - try { - const projectPackageJSON = getPackageJson(this.options.projectRoot); - - return projectPackageJSON["nativescript"]["tns-android"]["version"]; - } catch(e) { - return null; - } -} - -ProjectSnapshotGenerator.prototype.generateTnsJavaClassesFile = function(generationOptions) { +ProjectSnapshotGenerator.prototype.generateTnsJavaClassesFile = function (generationOptions) { const tnsJavaClassesGenerator = new TnsJavaClassesGenerator(); return tnsJavaClassesGenerator.generate({ projectRoot: this.options.projectRoot, @@ -201,7 +191,7 @@ ProjectSnapshotGenerator.prototype.generateTnsJavaClassesFile = function(generat }); } -ProjectSnapshotGenerator.prototype.generate = function(generationOptions) { +ProjectSnapshotGenerator.prototype.generate = function (generationOptions) { generationOptions = generationOptions || {}; console.log("Running snapshot generation with the following arguments: "); From 34e0d50cb3b24389e4949f326bda449b3b5c402b Mon Sep 17 00:00:00 2001 From: plamen5kov Date: Thu, 9 Nov 2017 09:52:33 +0200 Subject: [PATCH 2/5] get format major.minor.0 from any package when passing it to semver --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 80cc652c..e83b102e 100644 --- a/index.js +++ b/index.js @@ -36,7 +36,8 @@ exports.getAppPath = platform => { const RESOURCES_PATH = "src/main/assets/app"; const PROJECT_ROOT_PATH = "platforms/android"; - const appPath = semver.lt(androidPackageVersion, "3.4.0") ? + const normalizedPlatformVersion = `${semver.major(androidPackageVersion)}.${semver.minor(androidPackageVersion)}.0`; + const appPath = semver.lt(normalizedPlatformVersion, "3.4.0") ? path.join(PROJECT_ROOT_PATH, RESOURCES_PATH) : path.join(PROJECT_ROOT_PATH, "app", RESOURCES_PATH); From 110221d1b15298bcc1c9c2eca65ec7a9d51b251f Mon Sep 17 00:00:00 2001 From: plamen5kov Date: Thu, 9 Nov 2017 16:35:35 +0200 Subject: [PATCH 3/5] fix snapshots --- index.js | 14 ++------------ plugins/NativeScriptSnapshotPlugin.js | 7 ++++--- projectHelpers.js | 15 +++++++++++++++ snapshot/android/project-snapshot-generator.js | 16 +++++++++------- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/index.js b/index.js index e83b102e..4bdf487c 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,7 @@ const path = require("path"); const { existsSync } = require("fs"); -const semver = require("semver"); -const { getPackageJson, getProjectDir, isAngular, getAndroidRuntimeVersion } = require("./projectHelpers"); +const { getPackageJson, getProjectDir, isAngular, resolveAndroidAppPath } = require("./projectHelpers"); const PROJECT_DIR = getProjectDir({ nestingLvl: 2 }); const APP_DIR = path.join(PROJECT_DIR, "app"); @@ -32,16 +31,7 @@ exports.getAppPath = platform => { return `platforms/ios/${sanitizedName}/app`; } else if (/android/i.test(platform)) { - const androidPackageVersion = getAndroidRuntimeVersion(PROJECT_DIR); - const RESOURCES_PATH = "src/main/assets/app"; - const PROJECT_ROOT_PATH = "platforms/android"; - - const normalizedPlatformVersion = `${semver.major(androidPackageVersion)}.${semver.minor(androidPackageVersion)}.0`; - const appPath = semver.lt(normalizedPlatformVersion, "3.4.0") ? - path.join(PROJECT_ROOT_PATH, RESOURCES_PATH) : - path.join(PROJECT_ROOT_PATH, "app", RESOURCES_PATH); - - return path.join(PROJECT_DIR, appPath); + return resolveAndroidAppPath(PROJECT_DIR); } else { throw new Error(`Invalid platform: ${platform}`); } diff --git a/plugins/NativeScriptSnapshotPlugin.js b/plugins/NativeScriptSnapshotPlugin.js index 53dae19f..e0570247 100644 --- a/plugins/NativeScriptSnapshotPlugin.js +++ b/plugins/NativeScriptSnapshotPlugin.js @@ -2,6 +2,7 @@ const { resolve, join } = require("path"); const { closeSync, openSync } = require("fs"); const ProjectSnapshotGenerator = require("../snapshot/android/project-snapshot-generator"); +const { resolveAndroidAppPath } = require("../projectHelpers"); exports.NativeScriptSnapshotPlugin = (function() { function NativeScriptSnapshotPlugin(options) { @@ -43,8 +44,8 @@ exports.NativeScriptSnapshotPlugin = (function() { console.log(`\n Snapshotting bundle at ${inputFile}`); - const preparedAppRootPath = join(options.projectRoot, "platforms/android/src/main/assets"); - const preprocessedInputFile = join(preparedAppRootPath, "app/_embedded_script_.js"); + const preparedAppRootPath = resolveAndroidAppPath(this.options.projectRoot); + const preprocessedInputFile = join(preparedAppRootPath, "_embedded_script_.js"); return ProjectSnapshotGenerator.prototype.generate.call(this, { inputFile, @@ -52,7 +53,7 @@ exports.NativeScriptSnapshotPlugin = (function() { targetArchs: options.targetArchs, useLibs: options.useLibs, androidNdkPath: options.androidNdkPath, - tnsJavaClassesPath: join(preparedAppRootPath, "app/tns-java-classes.js") + tnsJavaClassesPath: join(preparedAppRootPath, "tns-java-classes.js") }).then(() => { // Make the original file empty if (inputFile !== preprocessedInputFile) { diff --git a/projectHelpers.js b/projectHelpers.js index 79261750..1407e44e 100644 --- a/projectHelpers.js +++ b/projectHelpers.js @@ -1,5 +1,6 @@ const path = require("path"); const fs = require("fs"); +const semver = require("semver"); const isTypeScript = ({ projectDir, packageJson } = {}) => { packageJson = packageJson || getPackageJson(projectDir); @@ -63,6 +64,19 @@ const getProjectDir = ({ nestingLvl } = { nestingLvl: 0 }) => { .reduce(dir => path.dirname(dir), __dirname); }; +const resolveAndroidAppPath = (projectDir) => { + const androidPackageVersion = getAndroidRuntimeVersion(projectDir); + const RESOURCES_PATH = "src/main/assets/app"; + const PROJECT_ROOT_PATH = "platforms/android"; + + const normalizedPlatformVersion = `${semver.major(androidPackageVersion)}.${semver.minor(androidPackageVersion)}.0`; + const appPath = semver.lt(normalizedPlatformVersion, "3.4.0") ? + path.join(PROJECT_ROOT_PATH, RESOURCES_PATH) : + path.join(PROJECT_ROOT_PATH, "app", RESOURCES_PATH); + + return path.join(projectDir, appPath); +}; + const getPackageJsonPath = projectDir => path.resolve(projectDir, "package.json"); module.exports = { @@ -72,4 +86,5 @@ module.exports = { getPackageJson, getProjectDir, getAndroidRuntimeVersion, + resolveAndroidAppPath, }; diff --git a/snapshot/android/project-snapshot-generator.js b/snapshot/android/project-snapshot-generator.js index 7456fd87..65ff6dec 100644 --- a/snapshot/android/project-snapshot-generator.js +++ b/snapshot/android/project-snapshot-generator.js @@ -6,6 +6,8 @@ const semver = require("semver"); const SnapshotGenerator = require("./snapshot-generator"); const TnsJavaClassesGenerator = require("./tns-java-classes-generator"); +const { resolveAndroidAppPath } = require("../../projectHelpers"); + const { CONSTANTS, createDirectory, @@ -27,7 +29,6 @@ const resolveRelativePath = (path) => { function ProjectSnapshotGenerator(options) { this.options = options = options || {}; - options.projectRoot = resolveRelativePath(options.projectRoot) || process.cwd(); console.log("Project root: " + options.projectRoot); @@ -58,7 +59,8 @@ ProjectSnapshotGenerator.cleanSnapshotArtefacts = function (projectRoot) { ProjectSnapshotGenerator.installSnapshotArtefacts = function (projectRoot) { const buildPath = ProjectSnapshotGenerator.calculateBuildPath(projectRoot); const platformPath = join(projectRoot, "platforms/android"); - const assetsPath = join(platformPath, "src/main/assets"); + + const appPath = resolveAndroidAppPath(projectRoot); const configDestinationPath = join(platformPath, "configurations", SnapshotGenerator.SNAPSHOT_PACKAGE_NANE); // Remove build folder to make sure that the apk will be fully rebuild @@ -70,7 +72,7 @@ ProjectSnapshotGenerator.installSnapshotArtefacts = function (projectRoot) { // Copy tns-java-classes.js if (shelljs.test("-e", join(buildPath, "tns-java-classes.js"))) { - shelljs.cp(join(buildPath, "tns-java-classes.js"), join(assetsPath, "app/tns-java-classes.js")); + shelljs.cp(join(buildPath, "tns-java-classes.js"), join(appPath, "tns-java-classes.js")); } if (shelljs.test("-e", join(buildPath, "ndk-build/libs"))) { @@ -84,11 +86,11 @@ ProjectSnapshotGenerator.installSnapshotArtefacts = function (projectRoot) { else { // useLibs = false const blobsSrcPath = join(buildPath, "snapshots/blobs"); - const blobsDestinationPath = join(assetsPath, "snapshots"); - const appPackageJsonPath = join(assetsPath, "app/package.json"); + const blobsDestinationPath = resolve(appPath, "../snapshots"); + const appPackageJsonPath = join(appPath, "package.json"); // Copy the blobs in the prepared app folder - shelljs.cp("-R", blobsSrcPath + "/", join(assetsPath, "snapshots")); + shelljs.cp("-R", blobsSrcPath + "/", resolve(appPath, "../snapshots")); /* Rename TNSSnapshot.blob files to snapshot.blob files. The xxd tool uses the file name for the name of the static array. This is why the *.blob files are initially named TNSSnapshot.blob. After the xxd step, they must be renamed to snapshot.blob, because this is the filename that the Android runtime is looking for. @@ -146,7 +148,7 @@ ProjectSnapshotGenerator.prototype.getV8Version = function (generationOptions) { return resolve(maybeV8Version); } - const runtimeVersion = this.getAndroidRuntimeVersion(this.options.projectRoot); + const runtimeVersion = getAndroidRuntimeVersion(this.options.projectRoot); getV8VersionsMap(runtimeVersion) .then(({ versionsMap, latest }) => { const v8Version = findV8Version(runtimeVersion, versionsMap); From 0a5ab6da0d216929bfe723da05f21521b7c16785 Mon Sep 17 00:00:00 2001 From: sis0k0 Date: Thu, 16 Nov 2017 14:23:41 +0200 Subject: [PATCH 4/5] fix: make install and clean snapshot methods work with new android project structure --- projectHelpers.js | 44 +++++++++++++++---- .../android/project-snapshot-generator.js | 42 ++++++++++++------ snapshot/android/snapshot-generator.js | 1 + 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/projectHelpers.js b/projectHelpers.js index 1407e44e..2855cc6d 100644 --- a/projectHelpers.js +++ b/projectHelpers.js @@ -2,6 +2,7 @@ const path = require("path"); const fs = require("fs"); const semver = require("semver"); + const isTypeScript = ({ projectDir, packageJson } = {}) => { packageJson = packageJson || getPackageJson(projectDir); @@ -25,7 +26,8 @@ const getAndroidRuntimeVersion = (projectDir) => { try { const projectPackageJSON = getPackageJson(projectDir); - return projectPackageJSON["nativescript"]["tns-android"]["version"]; + const version = projectPackageJSON["nativescript"]["tns-android"]["version"]; + return version && toReleaseVersion(version); } catch (e) { return null; } @@ -64,17 +66,39 @@ const getProjectDir = ({ nestingLvl } = { nestingLvl: 0 }) => { .reduce(dir => path.dirname(dir), __dirname); }; -const resolveAndroidAppPath = (projectDir) => { - const androidPackageVersion = getAndroidRuntimeVersion(projectDir); +const toReleaseVersion = version => + version.replace(/-.*/, ""); + +const getAndroidProjectPath = ({androidPackageVersion, projectRoot}) => { + const ANDROID_PROJECT_PATH = "platforms/android"; + if (projectRoot) { + androidPackageVersion = getAndroidRuntimeVersion(projectRoot); + } + + return semver.lt(androidPackageVersion, "3.4.0") ? + ANDROID_PROJECT_PATH : + path.join(ANDROID_PROJECT_PATH, "app"); +}; + + +const resolveAndroidAppPath = projectDir => { const RESOURCES_PATH = "src/main/assets/app"; - const PROJECT_ROOT_PATH = "platforms/android"; + const androidPackageVersion = getAndroidRuntimeVersion(projectDir); + const androidProjectPath = getAndroidProjectPath({androidPackageVersion}); + + return path.join(projectDir, androidProjectPath, RESOURCES_PATH); +}; + +const resolveAndroidConfigurationsPath = projectDir => { + const CONFIGURATIONS_DIR = "configurations"; + const androidPackageVersion = getAndroidRuntimeVersion(projectDir); + const androidProjectPath = getAndroidProjectPath({androidPackageVersion}); - const normalizedPlatformVersion = `${semver.major(androidPackageVersion)}.${semver.minor(androidPackageVersion)}.0`; - const appPath = semver.lt(normalizedPlatformVersion, "3.4.0") ? - path.join(PROJECT_ROOT_PATH, RESOURCES_PATH) : - path.join(PROJECT_ROOT_PATH, "app", RESOURCES_PATH); + const configurationsPath = semver.lt(androidPackageVersion, "3.3.0") ? + path.join(androidProjectPath, CONFIGURATIONS_DIR): + path.join(androidProjectPath, "build", CONFIGURATIONS_DIR); - return path.join(projectDir, appPath); + return path.join(projectDir, configurationsPath); }; const getPackageJsonPath = projectDir => path.resolve(projectDir, "package.json"); @@ -86,5 +110,7 @@ module.exports = { getPackageJson, getProjectDir, getAndroidRuntimeVersion, + getAndroidProjectPath, resolveAndroidAppPath, + resolveAndroidConfigurationsPath, }; diff --git a/snapshot/android/project-snapshot-generator.js b/snapshot/android/project-snapshot-generator.js index 65ff6dec..9a4ca6ef 100644 --- a/snapshot/android/project-snapshot-generator.js +++ b/snapshot/android/project-snapshot-generator.js @@ -6,14 +6,18 @@ const semver = require("semver"); const SnapshotGenerator = require("./snapshot-generator"); const TnsJavaClassesGenerator = require("./tns-java-classes-generator"); -const { resolveAndroidAppPath } = require("../../projectHelpers"); - const { CONSTANTS, createDirectory, getJsonFile, } = require("./utils"); -const { getPackageJson, getAndroidRuntimeVersion } = require("../../projectHelpers"); +const { + getPackageJson, + getAndroidRuntimeVersion, + getAndroidProjectPath, + resolveAndroidAppPath, + resolveAndroidConfigurationsPath, +} = require("../../projectHelpers"); const MIN_ANDROID_RUNTIME_VERSION = "3.0.0"; const VALID_ANDROID_RUNTIME_TAGS = Object.freeze(["next", "rc"]); @@ -39,29 +43,44 @@ function ProjectSnapshotGenerator(options) { module.exports = ProjectSnapshotGenerator; ProjectSnapshotGenerator.calculateBuildPath = function (projectRoot) { - return join(projectRoot, "platforms/android/snapshot-build/build"); + return join( + ProjectSnapshotGenerator.calculateProjectPath(projectRoot), + "snapshot-build", + "build" + ); } ProjectSnapshotGenerator.prototype.getBuildPath = function () { return ProjectSnapshotGenerator.calculateBuildPath(this.options.projectRoot); } +ProjectSnapshotGenerator.calculateProjectPath = function (projectRoot) { + const projectPath = getAndroidProjectPath({projectRoot}); + return join(projectRoot, projectPath); +} + +ProjectSnapshotGenerator.prototype.getProjectPath = function () { + return ProjectSnapshotGenerator.calculateProjectPath(this.options.projectRoot); +} + ProjectSnapshotGenerator.cleanSnapshotArtefacts = function (projectRoot) { - const platformPath = join(projectRoot, "platforms/android"); + const platformPath = ProjectSnapshotGenerator.calculateProjectPath(projectRoot); // Remove blob files from prepared folder shelljs.rm("-rf", join(platformPath, "src/main/assets/snapshots")); // Remove prepared include.gradle configurations - shelljs.rm("-rf", join(platformPath, "configurations/", SnapshotGenerator.SNAPSHOT_PACKAGE_NANE)); + const configurationsPath = resolveAndroidConfigurationsPath(projectRoot); + shelljs.rm("-rf", join(configurationsPath, SnapshotGenerator.SNAPSHOT_PACKAGE_NANE)); } ProjectSnapshotGenerator.installSnapshotArtefacts = function (projectRoot) { const buildPath = ProjectSnapshotGenerator.calculateBuildPath(projectRoot); - const platformPath = join(projectRoot, "platforms/android"); + const platformPath = ProjectSnapshotGenerator.calculateProjectPath(projectRoot); const appPath = resolveAndroidAppPath(projectRoot); - const configDestinationPath = join(platformPath, "configurations", SnapshotGenerator.SNAPSHOT_PACKAGE_NANE); + const configurationsPath = resolveAndroidConfigurationsPath(projectRoot); + const configDestinationPath = join(configurationsPath, SnapshotGenerator.SNAPSHOT_PACKAGE_NANE); // Remove build folder to make sure that the apk will be fully rebuild shelljs.rm("-rf", join(platformPath, "build")); @@ -122,9 +141,8 @@ const fetchV8VersionsFile = () => }); const findV8Version = (runtimeVersion, v8VersionsMap) => { - const runtimeReleaseVersion = runtimeVersion.replace(/-.*/, ""); const runtimeRange = Object.keys(v8VersionsMap) - .find(range => semver.satisfies(runtimeReleaseVersion, range)); + .find(range => semver.satisfies(runtimeVersion, range)); return v8VersionsMap[runtimeRange]; } @@ -170,9 +188,7 @@ ProjectSnapshotGenerator.prototype.getV8Version = function (generationOptions) { ProjectSnapshotGenerator.prototype.validateAndroidRuntimeVersion = function () { const currentRuntimeVersion = getAndroidRuntimeVersion(this.options.projectRoot); - if (!currentRuntimeVersion || - !existsSync(join(this.options.projectRoot, "platforms/android"))) { - + if (!currentRuntimeVersion || !this.getProjectPath()) { throw new Error("In order to generate a V8 snapshot you must have the \"android\" platform installed - to do so please run \"tns platform add android\"."); } diff --git a/snapshot/android/snapshot-generator.js b/snapshot/android/snapshot-generator.js index 8aa7d4a3..f89618c2 100644 --- a/snapshot/android/snapshot-generator.js +++ b/snapshot/android/snapshot-generator.js @@ -81,6 +81,7 @@ SnapshotGenerator.prototype.convertToAndroidArchName = function(archName) { SnapshotGenerator.prototype.runMksnapshotTool = function(snapshotToolsPath, inputFile, v8Version, targetArchs, buildCSource) { // Cleans the snapshot build folder shelljs.rm("-rf", join(this.buildPath, "snapshots")); + console.log("000 v8 version" + v8Version); const mksnapshotStdErrPath = join(this.buildPath, "mksnapshot-stderr.txt"); From 6c5eb0818e8066b31a24834e7c447fbbbffbea6e Mon Sep 17 00:00:00 2001 From: sis0k0 Date: Thu, 16 Nov 2017 16:16:37 +0200 Subject: [PATCH 5/5] style: remove debug log and empty line --- projectHelpers.js | 1 - snapshot/android/snapshot-generator.js | 1 - 2 files changed, 2 deletions(-) diff --git a/projectHelpers.js b/projectHelpers.js index 2855cc6d..629fcf8c 100644 --- a/projectHelpers.js +++ b/projectHelpers.js @@ -2,7 +2,6 @@ const path = require("path"); const fs = require("fs"); const semver = require("semver"); - const isTypeScript = ({ projectDir, packageJson } = {}) => { packageJson = packageJson || getPackageJson(projectDir); diff --git a/snapshot/android/snapshot-generator.js b/snapshot/android/snapshot-generator.js index f89618c2..8aa7d4a3 100644 --- a/snapshot/android/snapshot-generator.js +++ b/snapshot/android/snapshot-generator.js @@ -81,7 +81,6 @@ SnapshotGenerator.prototype.convertToAndroidArchName = function(archName) { SnapshotGenerator.prototype.runMksnapshotTool = function(snapshotToolsPath, inputFile, v8Version, targetArchs, buildCSource) { // Cleans the snapshot build folder shelljs.rm("-rf", join(this.buildPath, "snapshots")); - console.log("000 v8 version" + v8Version); const mksnapshotStdErrPath = join(this.buildPath, "mksnapshot-stderr.txt");