summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/android/cordova/lib/build.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-08-31 22:37:03 +0200
committerJules Laplace <julescarbon@gmail.com>2020-08-31 22:37:03 +0200
commitd22d51a1ae49680015326857360eb699f31efced (patch)
tree43ac5007de26848f516b37b863daeb77f86d97d2 /StoneIsland/platforms/android/cordova/lib/build.js
parenta81d20bc18d002623fc24cdcea8df7eed6d85bc9 (diff)
NO MORE ANDROID BUILD
Diffstat (limited to 'StoneIsland/platforms/android/cordova/lib/build.js')
-rw-r--r--StoneIsland/platforms/android/cordova/lib/build.js301
1 files changed, 0 insertions, 301 deletions
diff --git a/StoneIsland/platforms/android/cordova/lib/build.js b/StoneIsland/platforms/android/cordova/lib/build.js
deleted file mode 100644
index bd613da2..00000000
--- a/StoneIsland/platforms/android/cordova/lib/build.js
+++ /dev/null
@@ -1,301 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q'),
- path = require('path'),
- fs = require('fs'),
- nopt = require('nopt');
-
-var Adb = require('./Adb');
-
-var builders = require('./builders/builders');
-var events = require('cordova-common').events;
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-
-function parseOpts(options, resolvedTarget, projectRoot) {
- options = options || {};
- options.argv = nopt({
- gradle: Boolean,
- ant: Boolean,
- prepenv: Boolean,
- versionCode: String,
- minSdkVersion: String,
- gradleArg: [String, Array],
- keystore: path,
- alias: String,
- storePassword: String,
- password: String,
- keystoreType: String
- }, {}, options.argv, 0);
-
- var ret = {
- buildType: options.release ? 'release' : 'debug',
- buildMethod: process.env.ANDROID_BUILD || 'gradle',
- prepEnv: options.argv.prepenv,
- arch: resolvedTarget && resolvedTarget.arch,
- extraArgs: []
- };
-
- if (options.argv.ant || options.argv.gradle)
- ret.buildMethod = options.argv.ant ? 'ant' : 'gradle';
-
- if (options.nobuild) ret.buildMethod = 'none';
-
- if (options.argv.versionCode)
- ret.extraArgs.push('-PcdvVersionCode=' + options.argv.versionCode);
-
- if (options.argv.minSdkVersion)
- ret.extraArgs.push('-PcdvMinSdkVersion=' + options.argv.minSdkVersion);
-
- if (options.argv.gradleArg) {
- ret.extraArgs = ret.extraArgs.concat(options.argv.gradleArg);
- }
-
- var packageArgs = {};
-
- if (options.argv.keystore)
- packageArgs.keystore = path.relative(projectRoot, path.resolve(options.argv.keystore));
-
- ['alias','storePassword','password','keystoreType'].forEach(function (flagName) {
- if (options.argv[flagName])
- packageArgs[flagName] = options.argv[flagName];
- });
-
- var buildConfig = options.buildConfig;
-
- // If some values are not specified as command line arguments - use build config to supplement them.
- // Command line arguemnts have precedence over build config.
- if (buildConfig) {
- if (!fs.existsSync(buildConfig)) {
- throw new Error('Specified build config file does not exist: ' + buildConfig);
- }
- events.emit('log', 'Reading build config file: '+ path.resolve(buildConfig));
- var buildjson = fs.readFileSync(buildConfig, 'utf8');
- var config = JSON.parse(buildjson.replace(/^\ufeff/, '')); // Remove BOM
- if (config.android && config.android[ret.buildType]) {
- var androidInfo = config.android[ret.buildType];
- if(androidInfo.keystore && !packageArgs.keystore) {
- if(androidInfo.keystore.substr(0,1) === '~') {
- androidInfo.keystore = process.env.HOME + androidInfo.keystore.substr(1);
- }
- packageArgs.keystore = path.resolve(path.dirname(buildConfig), androidInfo.keystore);
- events.emit('log', 'Reading the keystore from: ' + packageArgs.keystore);
- }
-
- ['alias', 'storePassword', 'password','keystoreType'].forEach(function (key){
- packageArgs[key] = packageArgs[key] || androidInfo[key];
- });
- }
- }
-
- if (packageArgs.keystore && packageArgs.alias) {
- ret.packageInfo = new PackageInfo(packageArgs.keystore, packageArgs.alias, packageArgs.storePassword,
- packageArgs.password, packageArgs.keystoreType);
- }
-
- if(!ret.packageInfo) {
- if(Object.keys(packageArgs).length > 0) {
- events.emit('warn', '\'keystore\' and \'alias\' need to be specified to generate a signed archive.');
- }
- }
-
- return ret;
-}
-
-/*
- * Builds the project with the specifed options
- * Returns a promise.
- */
-module.exports.runClean = function(options) {
- var opts = parseOpts(options, null, this.root);
- var builder = builders.getBuilder(opts.buildMethod);
- return builder.prepEnv(opts)
- .then(function() {
- return builder.clean(opts);
- });
-};
-
-/**
- * Builds the project with the specifed options.
- *
- * @param {BuildOptions} options A set of options. See PlatformApi.build
- * method documentation for reference.
- * @param {Object} optResolvedTarget A deployment target. Used to pass
- * target architecture from upstream 'run' call. TODO: remove this option in
- * favor of setting buildOptions.archs field.
- *
- * @return {Promise<Object>} Promise, resolved with built packages
- * information.
- */
-module.exports.run = function(options, optResolvedTarget) {
- var opts = parseOpts(options, optResolvedTarget, this.root);
- var builder = builders.getBuilder(opts.buildMethod);
- return builder.prepEnv(opts)
- .then(function() {
- if (opts.prepEnv) {
- events.emit('verbose', 'Build file successfully prepared.');
- return;
- }
- return builder.build(opts)
- .then(function() {
- var apkPaths = builder.findOutputApks(opts.buildType, opts.arch);
- events.emit('log', 'Built the following apk(s): \n\t' + apkPaths.join('\n\t'));
- return {
- apkPaths: apkPaths,
- buildType: opts.buildType,
- buildMethod: opts.buildMethod
- };
- });
- });
-};
-
-/*
- * Detects the architecture of a device/emulator
- * Returns "arm" or "x86".
- */
-module.exports.detectArchitecture = function(target) {
- function helper() {
- return Adb.shell(target, 'cat /proc/cpuinfo')
- .then(function(output) {
- return /intel/i.exec(output) ? 'x86' : 'arm';
- });
- }
- // It sometimes happens (at least on OS X), that this command will hang forever.
- // To fix it, either unplug & replug device, or restart adb server.
- return helper()
- .timeout(1000, new CordovaError('Device communication timed out. Try unplugging & replugging the device.'))
- .then(null, function(err) {
- if (/timed out/.exec('' + err)) {
- // adb kill-server doesn't seem to do the trick.
- // Could probably find a x-platform version of killall, but I'm not actually
- // sure that this scenario even happens on non-OSX machines.
- events.emit('verbose', 'adb timed out while detecting device/emulator architecture. Killing adb and trying again.');
- return spawn('killall', ['adb'])
- .then(function() {
- return helper()
- .then(null, function() {
- // The double kill is sadly often necessary, at least on mac.
- events.emit('warn', 'adb timed out a second time while detecting device/emulator architecture. Killing adb and trying again.');
- return spawn('killall', ['adb'])
- .then(function() {
- return helper()
- .then(null, function() {
- return Q.reject(new CordovaError('adb timed out a third time while detecting device/emulator architecture. Try unplugging & replugging the device.'));
- });
- });
- });
- }, function() {
- // For non-killall OS's.
- return Q.reject(err);
- });
- }
- throw err;
- });
-};
-
-module.exports.findBestApkForArchitecture = function(buildResults, arch) {
- var paths = buildResults.apkPaths.filter(function(p) {
- var apkName = path.basename(p);
- if (buildResults.buildType == 'debug') {
- return /-debug/.exec(apkName);
- }
- return !/-debug/.exec(apkName);
- });
- var archPattern = new RegExp('-' + arch);
- var hasArchPattern = /-x86|-arm/;
- for (var i = 0; i < paths.length; ++i) {
- var apkName = path.basename(paths[i]);
- if (hasArchPattern.exec(apkName)) {
- if (archPattern.exec(apkName)) {
- return paths[i];
- }
- } else {
- return paths[i];
- }
- }
- throw new Error('Could not find apk architecture: ' + arch + ' build-type: ' + buildResults.buildType);
-};
-
-function PackageInfo(keystore, alias, storePassword, password, keystoreType) {
- this.keystore = {
- 'name': 'key.store',
- 'value': keystore
- };
- this.alias = {
- 'name': 'key.alias',
- 'value': alias
- };
- if (storePassword) {
- this.storePassword = {
- 'name': 'key.store.password',
- 'value': storePassword
- };
- }
- if (password) {
- this.password = {
- 'name': 'key.alias.password',
- 'value': password
- };
- }
- if (keystoreType) {
- this.keystoreType = {
- 'name': 'key.store.type',
- 'value': keystoreType
- };
- }
-}
-
-PackageInfo.prototype = {
- toProperties: function() {
- var self = this;
- var result = '';
- Object.keys(self).forEach(function(key) {
- result += self[key].name;
- result += '=';
- result += self[key].value.replace(/\\/g, '\\\\');
- result += '\n';
- });
- return result;
- }
-};
-
-module.exports.help = function() {
- console.log('Usage: ' + path.relative(process.cwd(), path.join('../build')) + ' [flags] [Signed APK flags]');
- console.log('Flags:');
- console.log(' \'--debug\': will build project in debug mode (default)');
- console.log(' \'--release\': will build project for release');
- console.log(' \'--ant\': will build project with ant');
- console.log(' \'--gradle\': will build project with gradle (default)');
- console.log(' \'--nobuild\': will skip build process (useful when using run command)');
- console.log(' \'--prepenv\': don\'t build, but copy in build scripts where necessary');
- console.log(' \'--versionCode=#\': Override versionCode for this build. Useful for uploading multiple APKs. Requires --gradle.');
- console.log(' \'--minSdkVersion=#\': Override minSdkVersion for this build. Useful for uploading multiple APKs. Requires --gradle.');
- console.log(' \'--gradleArg=<gradle command line arg>\': Extra args to pass to the gradle command. Use one flag per arg. Ex. --gradleArg=-PcdvBuildMultipleApks=true');
- console.log('');
- console.log('Signed APK flags (overwrites debug/release-signing.proprties) :');
- console.log(' \'--keystore=<path to keystore>\': Key store used to build a signed archive. (Required)');
- console.log(' \'--alias=\': Alias for the key store. (Required)');
- console.log(' \'--storePassword=\': Password for the key store. (Optional - prompted)');
- console.log(' \'--password=\': Password for the key. (Optional - prompted)');
- console.log(' \'--keystoreType\': Type of the keystore. (Optional)');
- process.exit(0);
-};