From 7600e9d22a670ace021e9d2119d1ef0428495e1f Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Fri, 27 Apr 2018 11:44:23 +0300 Subject: [PATCH 1/5] read v8-version from android settings file --- projectHelpers.js | 27 +++++++++++++++++-- .../android/project-snapshot-generator.js | 7 +++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/projectHelpers.js b/projectHelpers.js index 1725579f..7ebb1652 100644 --- a/projectHelpers.js +++ b/projectHelpers.js @@ -11,6 +11,7 @@ const { } = require("./nsCliHelpers"); const APP_DIR = "app"; +const ANDROID_PROJECT_PATH = "platforms/android"; const isTypeScript = ({ projectDir, packageJson } = {}) => { packageJson = packageJson || getPackageJson(projectDir); @@ -54,6 +55,19 @@ const getAndroidRuntimeVersion = (projectDir) => { } } +const getAndroidV8Version = (projectDir) => { + try { + const androidSettingsJSON = getAndroidSettingsJson(projectDir); + if(androidSettingsJSON != null) { + return androidSettingsJSON.v8Version; + } else { + return null; + } + } catch (e) { + return null; + } +} + const getWebpackConfig = (projectDir, env, configPath = "webpack.config.js") => { const configAbsolutePath = path.resolve(projectDir, configPath); let config; @@ -82,6 +96,15 @@ const getPackageJson = projectDir => { return JSON.parse(fs.readFileSync(packageJsonPath, "utf8")); }; +const getAndroidSettingsJson = projectDir => { + const androidSettingsJsonPath = path.resolve(projectDir, ANDROID_PROJECT_PATH, "settings.json"); + if (fs.existsSync(androidSettingsJsonPath)) { + return JSON.parse(fs.readFileSync(androidSettingsJsonPath, "utf8")); + } else { + return null; + } +}; + const writePackageJson = (content, projectDir) => { const packageJsonPath = getPackageJsonPath(projectDir); fs.writeFileSync(packageJsonPath, JSON.stringify(content, null, 2)) @@ -92,14 +115,13 @@ 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"); + path.join(ANDROID_PROJECT_PATH, APP_DIR); }; @@ -153,6 +175,7 @@ module.exports = { getAppResourcesPathFromProjectData, getAndroidProjectPath, getAndroidRuntimeVersion, + getAndroidV8Version, getPackageJson, getProjectDir, getWebpackConfig, diff --git a/snapshot/android/project-snapshot-generator.js b/snapshot/android/project-snapshot-generator.js index a856e0fa..3ff8c89e 100644 --- a/snapshot/android/project-snapshot-generator.js +++ b/snapshot/android/project-snapshot-generator.js @@ -15,6 +15,7 @@ const { getPackageJson, getAndroidRuntimeVersion, getAndroidProjectPath, + getAndroidV8Version, resolveAndroidAppPath, resolveAndroidConfigurationsPath, } = require("../../projectHelpers"); @@ -166,6 +167,12 @@ ProjectSnapshotGenerator.prototype.getV8Version = function (generationOptions) { return resolve(maybeV8Version); } + // try to get the V8 Version from the settings.json file in android runtime folder + const runtimeV8Version = getAndroidV8Version(this.options.projectPath); + if(runtimeV8Version) { + return resolve(runtimeV8Version); + } + const runtimeVersion = getAndroidRuntimeVersion(this.options.projectRoot); getV8VersionsMap(runtimeVersion) .then(({ versionsMap, latest }) => { From f78638c7e452bb84bcbf5a26f4cf9fbcaf302fc9 Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Fri, 27 Apr 2018 12:02:44 +0300 Subject: [PATCH 2/5] use projectRoot instead of projectPath --- snapshot/android/project-snapshot-generator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapshot/android/project-snapshot-generator.js b/snapshot/android/project-snapshot-generator.js index 3ff8c89e..b59f8b58 100644 --- a/snapshot/android/project-snapshot-generator.js +++ b/snapshot/android/project-snapshot-generator.js @@ -168,7 +168,7 @@ ProjectSnapshotGenerator.prototype.getV8Version = function (generationOptions) { } // try to get the V8 Version from the settings.json file in android runtime folder - const runtimeV8Version = getAndroidV8Version(this.options.projectPath); + const runtimeV8Version = getAndroidV8Version(this.options.projectRoot); if(runtimeV8Version) { return resolve(runtimeV8Version); } From 191777f56d022d2c80680ab227d3728f26ca4a5a Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Fri, 27 Apr 2018 12:08:02 +0300 Subject: [PATCH 3/5] added log with the v8 version --- snapshot/android/snapshot-generator.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/snapshot/android/snapshot-generator.js b/snapshot/android/snapshot-generator.js index a318c583..c2ba70dd 100644 --- a/snapshot/android/snapshot-generator.js +++ b/snapshot/android/snapshot-generator.js @@ -92,7 +92,7 @@ SnapshotGenerator.prototype.runMksnapshotTool = function(snapshotToolsPath, inpu const androidArch = this.convertToAndroidArchName(arch); console.log("***** Generating snapshot for " + androidArch + " *****"); - + // Generate .blob file const currentArchBlobOutputPath = join(this.buildPath, "snapshots/blobs", androidArch); shelljs.mkdir("-p", currentArchBlobOutputPath); @@ -158,14 +158,16 @@ SnapshotGenerator.prototype.generate = function(options) { if (!options.snapshotToolsPath) { throw new Error("snapshotToolsPath option is not specified."); } const preprocessedInputFile = options.preprocessedInputFile || join(this.buildPath, "inputFile.preprocessed"); + console.log("Using V8 version: ", options.v8Version); + this.preprocessInputFile(options.inputFile, preprocessedInputFile); // generates the actual .blob and .c files return this.runMksnapshotTool( - options.snapshotToolsPath, - preprocessedInputFile, - options.v8Version, - options.targetArchs, + options.snapshotToolsPath, + preprocessedInputFile, + options.v8Version, + options.targetArchs, options.useLibs ).then(() => { this.buildIncludeGradle(); From 06f4d3f4dcac15fa3527e6ff1b84edd26ae190c3 Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Fri, 27 Apr 2018 13:23:42 +0300 Subject: [PATCH 4/5] improved log --- snapshot/android/snapshot-generator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapshot/android/snapshot-generator.js b/snapshot/android/snapshot-generator.js index c2ba70dd..9352fa61 100644 --- a/snapshot/android/snapshot-generator.js +++ b/snapshot/android/snapshot-generator.js @@ -158,7 +158,7 @@ SnapshotGenerator.prototype.generate = function(options) { if (!options.snapshotToolsPath) { throw new Error("snapshotToolsPath option is not specified."); } const preprocessedInputFile = options.preprocessedInputFile || join(this.buildPath, "inputFile.preprocessed"); - console.log("Using V8 version: ", options.v8Version); + console.log("(***** Starting snapshot generation using V8 version: ", options.v8Version); this.preprocessInputFile(options.inputFile, preprocessedInputFile); From 2566cf76415346f81044a9fd19a415ae1c9184a7 Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Fri, 27 Apr 2018 13:26:46 +0300 Subject: [PATCH 5/5] removed unneeded symbol --- snapshot/android/snapshot-generator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapshot/android/snapshot-generator.js b/snapshot/android/snapshot-generator.js index 9352fa61..9a5dd542 100644 --- a/snapshot/android/snapshot-generator.js +++ b/snapshot/android/snapshot-generator.js @@ -158,7 +158,7 @@ SnapshotGenerator.prototype.generate = function(options) { if (!options.snapshotToolsPath) { throw new Error("snapshotToolsPath option is not specified."); } const preprocessedInputFile = options.preprocessedInputFile || join(this.buildPath, "inputFile.preprocessed"); - console.log("(***** Starting snapshot generation using V8 version: ", options.v8Version); + console.log("***** Starting snapshot generation using V8 version: ", options.v8Version); this.preprocessInputFile(options.inputFile, preprocessedInputFile);