| ; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.buildAndroid = void 0; | |
| const tslib_1 = require("tslib"); | |
| const path_1 = require("path"); | |
| const colors_1 = tslib_1.__importDefault(require("../colors")); | |
| const common_1 = require("../common"); | |
| const log_1 = require("../log"); | |
| const subprocess_1 = require("../util/subprocess"); | |
| async function buildAndroid(config, buildOptions) { | |
| var _a, _b; | |
| const releaseType = (_a = buildOptions.androidreleasetype) !== null && _a !== void 0 ? _a : 'AAB'; | |
| const releaseTypeIsAAB = releaseType === 'AAB'; | |
| const flavor = (_b = buildOptions.flavor) !== null && _b !== void 0 ? _b : ''; | |
| const arg = releaseTypeIsAAB ? `:app:bundle${flavor}Release` : `assemble${flavor}Release`; | |
| const gradleArgs = [arg]; | |
| try { | |
| await (0, common_1.runTask)('Running Gradle build', async () => (0, subprocess_1.runCommand)('./gradlew', gradleArgs, { | |
| cwd: config.android.platformDirAbs, | |
| })); | |
| } | |
| catch (e) { | |
| if (e.includes('EACCES')) { | |
| throw `gradlew file does not have executable permissions. This can happen if the Android platform was added on a Windows machine. Please run ${colors_1.default.strong(`chmod +x ./${config.android.platformDir}/gradlew`)} and try again.`; | |
| } | |
| else { | |
| throw e; | |
| } | |
| } | |
| const releaseDir = releaseTypeIsAAB | |
| ? flavor !== '' | |
| ? `${flavor}Release` | |
| : 'release' | |
| : flavor !== '' | |
| ? (0, path_1.join)(flavor, 'release') | |
| : 'release'; | |
| const releasePath = (0, path_1.join)(config.android.appDirAbs, 'build', 'outputs', releaseTypeIsAAB ? 'bundle' : 'apk', releaseDir); | |
| const unsignedReleaseName = `app${flavor !== '' ? `-${flavor}` : ''}-release${releaseTypeIsAAB ? '' : '-unsigned'}.${releaseType.toLowerCase()}`; | |
| const signedReleaseName = unsignedReleaseName.replace(`-release${releaseTypeIsAAB ? '' : '-unsigned'}.${releaseType.toLowerCase()}`, `-release-signed.${releaseType.toLowerCase()}`); | |
| if (buildOptions.signingtype == 'jarsigner') { | |
| await signWithJarSigner(config, buildOptions, releasePath, signedReleaseName, unsignedReleaseName); | |
| } | |
| else { | |
| await signWithApkSigner(config, buildOptions, releasePath, signedReleaseName, unsignedReleaseName); | |
| } | |
| (0, log_1.logSuccess)(`Successfully generated ${signedReleaseName} at: ${releasePath}`); | |
| } | |
| exports.buildAndroid = buildAndroid; | |
| async function signWithApkSigner(config, buildOptions, releasePath, signedReleaseName, unsignedReleaseName) { | |
| if (!buildOptions.keystorepath || !buildOptions.keystorepass) { | |
| throw 'Missing options. Please supply all options for android signing. (Keystore Path, Keystore Password)'; | |
| } | |
| const signingArgs = [ | |
| 'sign', | |
| '--ks', | |
| buildOptions.keystorepath, | |
| '--ks-pass', | |
| `pass:${buildOptions.keystorepass}`, | |
| '--in', | |
| `${(0, path_1.join)(releasePath, unsignedReleaseName)}`, | |
| '--out', | |
| `${(0, path_1.join)(releasePath, signedReleaseName)}`, | |
| ]; | |
| if (buildOptions.keystorealias) { | |
| signingArgs.push('--ks-key-alias', buildOptions.keystorealias); | |
| } | |
| if (buildOptions.keystorealiaspass) { | |
| signingArgs.push('--key-pass', `pass:${buildOptions.keystorealiaspass}`); | |
| } | |
| await (0, common_1.runTask)('Signing Release', async () => { | |
| await (0, subprocess_1.runCommand)('apksigner', signingArgs, { | |
| cwd: config.android.platformDirAbs, | |
| }); | |
| }); | |
| } | |
| async function signWithJarSigner(config, buildOptions, releasePath, signedReleaseName, unsignedReleaseName) { | |
| if (!buildOptions.keystorepath || | |
| !buildOptions.keystorealias || | |
| !buildOptions.keystorealiaspass || | |
| !buildOptions.keystorepass) { | |
| throw 'Missing options. Please supply all options for android signing. (Keystore Path, Keystore Password, Keystore Key Alias, Keystore Key Password)'; | |
| } | |
| const signingArgs = [ | |
| '-sigalg', | |
| 'SHA1withRSA', | |
| '-digestalg', | |
| 'SHA1', | |
| '-keystore', | |
| buildOptions.keystorepath, | |
| '-keypass', | |
| buildOptions.keystorealiaspass, | |
| '-storepass', | |
| buildOptions.keystorepass, | |
| `-signedjar`, | |
| `${(0, path_1.join)(releasePath, signedReleaseName)}`, | |
| `${(0, path_1.join)(releasePath, unsignedReleaseName)}`, | |
| buildOptions.keystorealias, | |
| ]; | |
| await (0, common_1.runTask)('Signing Release', async () => { | |
| await (0, subprocess_1.runCommand)('jarsigner', signingArgs, { | |
| cwd: config.android.platformDirAbs, | |
| }); | |
| }); | |
| } | |
Xet Storage Details
- Size:
- 4.67 kB
- Xet hash:
- 979fa08269c56ccdf335200b52845e9a3c00874bd2e9f275615fd8f29dd008dd
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.