@rock-js/platform-android 0.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +7 -0
  2. package/dist/src/index.d.ts +3 -0
  3. package/dist/src/index.d.ts.map +1 -0
  4. package/dist/src/index.js +4 -0
  5. package/dist/src/index.js.map +1 -0
  6. package/dist/src/lib/commands/aar/packageAar.d.ts +14 -0
  7. package/dist/src/lib/commands/aar/packageAar.d.ts.map +1 -0
  8. package/dist/src/lib/commands/aar/packageAar.js +34 -0
  9. package/dist/src/lib/commands/aar/packageAar.js.map +1 -0
  10. package/dist/src/lib/commands/aar/publishLocalAar.d.ts +6 -0
  11. package/dist/src/lib/commands/aar/publishLocalAar.d.ts.map +1 -0
  12. package/dist/src/lib/commands/aar/publishLocalAar.js +17 -0
  13. package/dist/src/lib/commands/aar/publishLocalAar.js.map +1 -0
  14. package/dist/src/lib/commands/buildAndroid/buildAndroid.d.ts +21 -0
  15. package/dist/src/lib/commands/buildAndroid/buildAndroid.d.ts.map +1 -0
  16. package/dist/src/lib/commands/buildAndroid/buildAndroid.js +68 -0
  17. package/dist/src/lib/commands/buildAndroid/buildAndroid.js.map +1 -0
  18. package/dist/src/lib/commands/buildAndroid/command.d.ts +3 -0
  19. package/dist/src/lib/commands/buildAndroid/command.d.ts.map +1 -0
  20. package/dist/src/lib/commands/buildAndroid/command.js +14 -0
  21. package/dist/src/lib/commands/buildAndroid/command.js.map +1 -0
  22. package/dist/src/lib/commands/generateKeystore.d.ts +13 -0
  23. package/dist/src/lib/commands/generateKeystore.d.ts.map +1 -0
  24. package/dist/src/lib/commands/generateKeystore.js +80 -0
  25. package/dist/src/lib/commands/generateKeystore.js.map +1 -0
  26. package/dist/src/lib/commands/getValidProjectConfig.d.ts +2 -0
  27. package/dist/src/lib/commands/getValidProjectConfig.d.ts.map +1 -0
  28. package/dist/src/lib/commands/getValidProjectConfig.js +10 -0
  29. package/dist/src/lib/commands/getValidProjectConfig.js.map +1 -0
  30. package/dist/src/lib/commands/runAndroid/adb.d.ts +5 -0
  31. package/dist/src/lib/commands/runAndroid/adb.d.ts.map +1 -0
  32. package/dist/src/lib/commands/runAndroid/adb.js +38 -0
  33. package/dist/src/lib/commands/runAndroid/adb.js.map +1 -0
  34. package/dist/src/lib/commands/runAndroid/command.d.ts +3 -0
  35. package/dist/src/lib/commands/runAndroid/command.d.ts.map +1 -0
  36. package/dist/src/lib/commands/runAndroid/command.js +15 -0
  37. package/dist/src/lib/commands/runAndroid/command.js.map +1 -0
  38. package/dist/src/lib/commands/runAndroid/findOutputFile.d.ts +2 -0
  39. package/dist/src/lib/commands/runAndroid/findOutputFile.d.ts.map +1 -0
  40. package/dist/src/lib/commands/runAndroid/findOutputFile.js +67 -0
  41. package/dist/src/lib/commands/runAndroid/findOutputFile.js.map +1 -0
  42. package/dist/src/lib/commands/runAndroid/listAndroidDevices.d.ts +7 -0
  43. package/dist/src/lib/commands/runAndroid/listAndroidDevices.d.ts.map +1 -0
  44. package/dist/src/lib/commands/runAndroid/listAndroidDevices.js +69 -0
  45. package/dist/src/lib/commands/runAndroid/listAndroidDevices.js.map +1 -0
  46. package/dist/src/lib/commands/runAndroid/listAndroidUsers.d.ts +7 -0
  47. package/dist/src/lib/commands/runAndroid/listAndroidUsers.d.ts.map +1 -0
  48. package/dist/src/lib/commands/runAndroid/listAndroidUsers.js +42 -0
  49. package/dist/src/lib/commands/runAndroid/listAndroidUsers.js.map +1 -0
  50. package/dist/src/lib/commands/runAndroid/runAndroid.d.ts +31 -0
  51. package/dist/src/lib/commands/runAndroid/runAndroid.d.ts.map +1 -0
  52. package/dist/src/lib/commands/runAndroid/runAndroid.js +178 -0
  53. package/dist/src/lib/commands/runAndroid/runAndroid.js.map +1 -0
  54. package/dist/src/lib/commands/runAndroid/tryInstallAppOnDevice.d.ts +3 -0
  55. package/dist/src/lib/commands/runAndroid/tryInstallAppOnDevice.d.ts.map +1 -0
  56. package/dist/src/lib/commands/runAndroid/tryInstallAppOnDevice.js +63 -0
  57. package/dist/src/lib/commands/runAndroid/tryInstallAppOnDevice.js.map +1 -0
  58. package/dist/src/lib/commands/runAndroid/tryLaunchAppOnDevice.d.ts +7 -0
  59. package/dist/src/lib/commands/runAndroid/tryLaunchAppOnDevice.d.ts.map +1 -0
  60. package/dist/src/lib/commands/runAndroid/tryLaunchAppOnDevice.js +51 -0
  61. package/dist/src/lib/commands/runAndroid/tryLaunchAppOnDevice.js.map +1 -0
  62. package/dist/src/lib/commands/runAndroid/tryLaunchEmulator.d.ts +2 -0
  63. package/dist/src/lib/commands/runAndroid/tryLaunchEmulator.d.ts.map +1 -0
  64. package/dist/src/lib/commands/runAndroid/tryLaunchEmulator.js +120 -0
  65. package/dist/src/lib/commands/runAndroid/tryLaunchEmulator.js.map +1 -0
  66. package/dist/src/lib/commands/runAndroid/tryRunAdbReverse.d.ts +1 -0
  67. package/dist/src/lib/commands/runAndroid/tryRunAdbReverse.d.ts.map +1 -0
  68. package/dist/src/lib/commands/runAndroid/tryRunAdbReverse.js +21 -0
  69. package/dist/src/lib/commands/runAndroid/tryRunAdbReverse.js.map +1 -0
  70. package/dist/src/lib/commands/runGradle.d.ts +18 -0
  71. package/dist/src/lib/commands/runGradle.d.ts.map +1 -0
  72. package/dist/src/lib/commands/runGradle.js +124 -0
  73. package/dist/src/lib/commands/runGradle.js.map +1 -0
  74. package/dist/src/lib/commands/signAndroid/bundle.d.ts +8 -0
  75. package/dist/src/lib/commands/signAndroid/bundle.d.ts.map +1 -0
  76. package/dist/src/lib/commands/signAndroid/bundle.js +58 -0
  77. package/dist/src/lib/commands/signAndroid/bundle.js.map +1 -0
  78. package/dist/src/lib/commands/signAndroid/command.d.ts +14 -0
  79. package/dist/src/lib/commands/signAndroid/command.d.ts.map +1 -0
  80. package/dist/src/lib/commands/signAndroid/command.js +67 -0
  81. package/dist/src/lib/commands/signAndroid/command.js.map +1 -0
  82. package/dist/src/lib/commands/signAndroid/signAndroid.d.ts +12 -0
  83. package/dist/src/lib/commands/signAndroid/signAndroid.d.ts.map +1 -0
  84. package/dist/src/lib/commands/signAndroid/signAndroid.js +163 -0
  85. package/dist/src/lib/commands/signAndroid/signAndroid.js.map +1 -0
  86. package/dist/src/lib/commands/toPascalCase.d.ts +1 -0
  87. package/dist/src/lib/commands/toPascalCase.d.ts.map +1 -0
  88. package/dist/src/lib/commands/toPascalCase.js +4 -0
  89. package/dist/src/lib/commands/toPascalCase.js.map +1 -0
  90. package/dist/src/lib/paths.d.ts +7 -0
  91. package/dist/src/lib/paths.d.ts.map +1 -0
  92. package/dist/src/lib/paths.js +60 -0
  93. package/dist/src/lib/paths.js.map +1 -0
  94. package/dist/src/lib/platformAndroid.d.ts +5 -0
  95. package/dist/src/lib/platformAndroid.d.ts.map +1 -0
  96. package/dist/src/lib/platformAndroid.js +23 -0
  97. package/dist/src/lib/platformAndroid.js.map +1 -0
  98. package/package.json +35 -0
  99. package/react-native.config.ts +13 -0
  100. package/template/.github/workflows/remote-build-android.yml +64 -0
  101. package/template/android/app/build.gradle +127 -0
  102. package/template/android/app/debug.keystore +0 -0
  103. package/template/android/app/proguard-rules.pro +10 -0
  104. package/template/android/app/src/debug/AndroidManifest.xml +9 -0
  105. package/template/android/app/src/main/AndroidManifest.xml +26 -0
  106. package/template/android/app/src/main/java/com/helloworld/MainActivity.kt +22 -0
  107. package/template/android/app/src/main/java/com/helloworld/MainApplication.kt +38 -0
  108. package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  109. package/template/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  110. package/template/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  111. package/template/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  112. package/template/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  113. package/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  114. package/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  115. package/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  116. package/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  117. package/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  118. package/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  119. package/template/android/app/src/main/res/values/strings.xml +3 -0
  120. package/template/android/app/src/main/res/values/styles.xml +9 -0
  121. package/template/android/build.gradle +21 -0
  122. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  123. package/template/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  124. package/template/android/gradle.properties +46 -0
  125. package/template/android/gradlew +251 -0
  126. package/template/android/gradlew.bat +99 -0
  127. package/template/android/settings.gradle +6 -0
  128. package/template/package.json +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryLaunchEmulator.js","sourceRoot":"","sources":["../../../../../src/lib/commands/runAndroid/tryLaunchEmulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function tryRunAdbReverse(packagerPort: number | string, device: string): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryRunAdbReverse.d.ts","sourceRoot":"","sources":["../../../../../src/lib/commands/runAndroid/tryRunAdbReverse.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,GAAG,MAAM,EAC7B,MAAM,EAAE,MAAM,iBAoBf"}
@@ -0,0 +1,21 @@
1
+ import { logger, RockError, spawn } from '@rock-js/tools';
2
+ import { getAdbPath } from './adb.js';
3
+ // Runs ADB reverse tcp:8081 tcp:8081 to allow loading the jsbundle from the packager
4
+ export async function tryRunAdbReverse(packagerPort, device) {
5
+ try {
6
+ const adbPath = getAdbPath();
7
+ const adbArgs = [
8
+ '-s',
9
+ device,
10
+ 'reverse',
11
+ `tcp:${packagerPort}`,
12
+ `tcp:${packagerPort}`,
13
+ ];
14
+ logger.debug(`Connecting "${device}" to the development server`);
15
+ await spawn(adbPath, adbArgs);
16
+ }
17
+ catch (error) {
18
+ throw new RockError(`Failed to connect "${device}" to development server using "adb reverse"`, { cause: error.stderr });
19
+ }
20
+ }
21
+ //# sourceMappingURL=tryRunAdbReverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryRunAdbReverse.js","sourceRoot":"","sources":["../../../../../src/lib/commands/runAndroid/tryRunAdbReverse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAA6B,EAC7B,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG;YACd,IAAI;YACJ,MAAM;YACN,SAAS;YACT,OAAO,YAAY,EAAE;YACrB,OAAO,YAAY,EAAE;SACtB,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,6BAA6B,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,SAAS,CACjB,sBAAsB,MAAM,6CAA6C,EACzE,EAAE,KAAK,EAAG,KAAyB,CAAC,MAAM,EAAE,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AarProject } from './aar/packageAar.js';
2
+ import type { BuildFlags } from './buildAndroid/buildAndroid.js';
3
+ import type { AndroidProject, Flags } from './runAndroid/runAndroid.js';
4
+ type RunGradleAarArgs = {
5
+ tasks: string[];
6
+ aarProject: AarProject;
7
+ variant?: string;
8
+ };
9
+ export type RunGradleArgs = {
10
+ tasks: string[];
11
+ androidProject: AndroidProject;
12
+ args: BuildFlags | Flags;
13
+ artifactName: string;
14
+ };
15
+ export declare function runGradle({ tasks, androidProject, args, artifactName, }: RunGradleArgs): Promise<void>;
16
+ export declare function runGradleAar({ tasks, aarProject, variant, }: RunGradleAarArgs): Promise<void>;
17
+ export declare function getGradleWrapper(): "gradlew.bat" | "./gradlew";
18
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runGradle.d.ts","sourceRoot":"","sources":["../../../../src/lib/commands/runGradle.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExE,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAUF,wBAAsB,SAAS,CAAC,EAC9B,KAAK,EACL,cAAc,EACd,IAAI,EACJ,YAAY,GACb,EAAE,aAAa,iBAmEf;AAED,wBAAsB,YAAY,CAAC,EACjC,KAAK,EACL,UAAU,EACV,OAAO,GACR,EAAE,gBAAgB,iBAwClB;AAsBD,wBAAgB,gBAAgB,gCAE/B"}
@@ -0,0 +1,124 @@
1
+ import { color, logger, RockError, saveLocalBuildCache, spawn, spinner, } from '@rock-js/tools';
2
+ import { getAdbPath, getDevices } from './runAndroid/adb.js';
3
+ import { findOutputFile } from './runAndroid/findOutputFile.js';
4
+ const getCleanedErrorMessage = (error) => {
5
+ return error.stderr
6
+ .split('\n')
7
+ .filter((line) => !gradleLinesToRemove.some((l) => line.includes(l)))
8
+ .join('\n')
9
+ .trim();
10
+ };
11
+ export async function runGradle({ tasks, androidProject, args, artifactName, }) {
12
+ const humanReadableTasks = tasks.join(', ');
13
+ const { appId, appIdSuffix } = args;
14
+ const { applicationId } = androidProject;
15
+ const applicationIdWithSuffix = [appId || applicationId, appIdSuffix]
16
+ .filter(Boolean)
17
+ .join('.');
18
+ logger.log(`Build Settings:
19
+ App ID ${color.bold(color.blue(applicationIdWithSuffix))}
20
+ Variant ${color.bold(args.variant)}
21
+ Tasks ${color.bold(humanReadableTasks)}`);
22
+ const loader = spinner({ indicator: 'timer' });
23
+ const message = `Building the app`;
24
+ loader.start(message);
25
+ const gradleArgs = getTaskNames(androidProject.appName, tasks);
26
+ gradleArgs.push('-x', 'lint');
27
+ if (args.extraParams) {
28
+ gradleArgs.push(...args.extraParams);
29
+ }
30
+ if ('port' in args && args.port != null) {
31
+ gradleArgs.push('-PreactNativeDevServerPort=' + args.port);
32
+ }
33
+ if (args.activeArchOnly) {
34
+ const devices = await getDevices();
35
+ const cpus = await Promise.all(devices.map(getCPU));
36
+ const architectures = cpus.filter((arch, index, array) => arch != null && array.indexOf(arch) === index);
37
+ if (architectures.length > 0) {
38
+ gradleArgs.push('-PreactNativeArchitectures=' + architectures.join(','));
39
+ }
40
+ }
41
+ const gradleWrapper = getGradleWrapper();
42
+ try {
43
+ await spawn(gradleWrapper, gradleArgs, { cwd: androidProject.sourceDir });
44
+ loader.stop(`Built the app`);
45
+ }
46
+ catch (error) {
47
+ loader.stop('Failed to build the app');
48
+ const cleanedErrorMessage = getCleanedErrorMessage(error);
49
+ if (cleanedErrorMessage) {
50
+ logger.error(cleanedErrorMessage);
51
+ }
52
+ const hints = getErrorHints(error.stdout ?? '');
53
+ throw new RockError(hints ||
54
+ 'Failed to build the app. See the error above for details from Gradle.');
55
+ }
56
+ const outputFilePath = await findOutputFile(androidProject, tasks);
57
+ if (outputFilePath) {
58
+ saveLocalBuildCache(artifactName, outputFilePath);
59
+ }
60
+ }
61
+ export async function runGradleAar({ tasks, aarProject, variant, }) {
62
+ const loader = spinner({ indicator: 'timer' });
63
+ const message = variant
64
+ ? `Building the AAR with Gradle in ${variant} build variant`
65
+ : 'Publishing the AAR';
66
+ loader.start(message);
67
+ const gradleArgs = getTaskNames(aarProject.moduleName, tasks);
68
+ gradleArgs.push('-x', 'lint');
69
+ const gradleWrapper = getGradleWrapper();
70
+ try {
71
+ logger.debug(`Running ${gradleWrapper} ${gradleArgs.join(' ')}.`);
72
+ await spawn(gradleWrapper, gradleArgs, { cwd: aarProject.sourceDir });
73
+ loader.stop(variant
74
+ ? `Built the AAR in ${variant} build variant.`
75
+ : 'Published the AAR to local maven (~/.m2/repository)');
76
+ }
77
+ catch (error) {
78
+ loader.stop(`Failed to ${variant ? 'build' : 'publish'} the AAR`);
79
+ const cleanedErrorMessage = getCleanedErrorMessage(error);
80
+ if (cleanedErrorMessage) {
81
+ logger.error(cleanedErrorMessage);
82
+ }
83
+ const hints = getErrorHints(error.stdout ?? '');
84
+ throw new RockError(hints ||
85
+ `Failed to ${variant ? 'build' : 'publish'} the AAR. See the error above for details from Gradle.`, { cause: error.stderr });
86
+ }
87
+ }
88
+ function getErrorHints(output) {
89
+ const signingMessage = output.includes('validateSigningRelease FAILED')
90
+ ? `Hint: You can run "${color.bold('rock create-keystore:android')}" to create a keystore file.`
91
+ : '';
92
+ return signingMessage;
93
+ }
94
+ const gradleLinesToRemove = [
95
+ 'FAILURE: Build failed with an exception.',
96
+ '* Try:',
97
+ '> Run with --stacktrace option to get the stack trace.',
98
+ '> Run with --info or --debug option to get more log output.',
99
+ '> Run with --scan to get full insights.',
100
+ '> Get more help at [undefined](https://help.gradle.org).',
101
+ '> Get more help at https://help.gradle.org.',
102
+ 'BUILD FAILED',
103
+ ];
104
+ export function getGradleWrapper() {
105
+ return process.platform.startsWith('win') ? 'gradlew.bat' : './gradlew';
106
+ }
107
+ function getTaskNames(appName, tasks) {
108
+ return tasks.map((task) => `${appName}:${task}`);
109
+ }
110
+ /**
111
+ * Gets the CPU architecture of a device from ADB
112
+ */
113
+ async function getCPU(device) {
114
+ const adbPath = getAdbPath();
115
+ try {
116
+ const { output } = await spawn(adbPath, ['-s', device, 'shell', 'getprop', 'ro.product.cpu.abi'], { stdio: 'pipe' });
117
+ const cpus = output.trim();
118
+ return cpus.length > 0 ? cpus : null;
119
+ }
120
+ catch {
121
+ return null;
122
+ }
123
+ }
124
+ //# sourceMappingURL=runGradle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runGradle.js","sourceRoot":"","sources":["../../../../src/lib/commands/runGradle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,mBAAmB,EACnB,KAAK,EACL,OAAO,GAER,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAiBhE,MAAM,sBAAsB,GAAG,CAAC,KAAsB,EAAE,EAAE;IACxD,OAAO,KAAK,CAAC,MAAM;SAChB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC9B,KAAK,EACL,cAAc,EACd,IAAI,EACJ,YAAY,GACE;IACd,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAa,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC;IACzC,MAAM,uBAAuB,GAAG,CAAC,KAAK,IAAI,aAAa,EAAE,WAAW,CAAC;SAClE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,CAAC,GAAG,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC;IAEnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,UAAU,GAAG,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CACtE,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC,6BAA6B,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,KAAwB,CACzB,CAAC;QAEF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAE,KAAyB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,SAAS,CACjB,KAAK;YACH,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACnE,IAAI,cAAc,EAAE,CAAC;QACnB,mBAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,KAAK,EACL,UAAU,EACV,OAAO,GACU;IACjB,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,mCAAmC,OAAO,gBAAgB;QAC5D,CAAC,CAAC,oBAAoB,CAAC;IAEzB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE9D,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE9B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,WAAW,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CACT,OAAO;YACL,CAAC,CAAC,oBAAoB,OAAO,iBAAiB;YAC9C,CAAC,CAAC,qDAAqD,CAC1D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC;QAClE,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,KAAwB,CACzB,CAAC;QAEF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAE,KAAyB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,SAAS,CACjB,KAAK;YACH,aACE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SACtB,wDAAwD,EAC1D,EAAE,KAAK,EAAG,KAAyB,CAAC,MAAM,EAAE,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACrE,CAAC,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAC9B,8BAA8B,CAC/B,8BAA8B;QACjC,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,mBAAmB,GAAG;IAC1B,0CAA0C;IAC1C,QAAQ;IACR,wDAAwD;IACxD,6DAA6D;IAC7D,yCAAyC;IACzC,0DAA0D;IAC1D,6CAA6C;IAC7C,cAAc;CACf,CAAC;AAEF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,KAAe;IACpD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,MAAM,CAAC,MAAc;IAClC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAC5B,OAAO,EACP,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,EACxD,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ type BuildJsBundleOptions = {
2
+ bundleOutputPath: string;
3
+ assetsDestPath: string;
4
+ sourcemapOutputPath: string;
5
+ useHermes?: boolean;
6
+ };
7
+ export declare function buildJsBundle(options: BuildJsBundleOptions): Promise<void>;
8
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/lib/commands/signAndroid/bundle.ts"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,iBA4DhE"}
@@ -0,0 +1,58 @@
1
+ import fs from 'node:fs';
2
+ import { logger, runHermes, spawn } from '@rock-js/tools';
3
+ export async function buildJsBundle(options) {
4
+ if (fs.existsSync(options.bundleOutputPath)) {
5
+ fs.unlinkSync(options.bundleOutputPath);
6
+ logger.debug('Removed existing JS bundle:', options.bundleOutputPath);
7
+ }
8
+ if (fs.existsSync(options.sourcemapOutputPath)) {
9
+ fs.unlinkSync(options.sourcemapOutputPath);
10
+ logger.debug('Removed existing sourcemap:', options.sourcemapOutputPath);
11
+ }
12
+ if (fs.existsSync(options.assetsDestPath)) {
13
+ fs.rmSync(options.assetsDestPath, { recursive: true });
14
+ logger.debug('Removed existing assets:', options.assetsDestPath);
15
+ }
16
+ // Captured params:
17
+ // bundle
18
+ // --platform android
19
+ // --dev false
20
+ // --reset-cache
21
+ // --entry-file <ProjectRoot>/index.js
22
+ // --bundle-output <ProjectRoot>/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle
23
+ // --assets-dest <ProjectRoot>/android/app/build/generated/res/createBundleReleaseJsAndAssets
24
+ // --sourcemap-output <ProjectRoot>/android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
25
+ // --minify false
26
+ // --verbose
27
+ // Reasonable defaults
28
+ // If user wants to build bundle differently, they should use `rock bundle` command directly
29
+ // and provide the JS bundle path to `--jsbundle` flag
30
+ const rockBundleArgs = [
31
+ 'bundle',
32
+ '--platform',
33
+ 'android',
34
+ `--dev`,
35
+ 'false',
36
+ '--reset-cache',
37
+ `--entry-file`,
38
+ `index.js`,
39
+ '--bundle-output',
40
+ options.bundleOutputPath,
41
+ '--assets-dest',
42
+ options.assetsDestPath,
43
+ '--sourcemap-output',
44
+ options.sourcemapOutputPath,
45
+ '--minify',
46
+ 'false',
47
+ '--verbose',
48
+ ];
49
+ await spawn('rock', rockBundleArgs, { preferLocal: true });
50
+ if (!options.useHermes) {
51
+ return;
52
+ }
53
+ await runHermes({
54
+ bundleOutputPath: options.bundleOutputPath,
55
+ sourcemapOutputPath: options.sourcemapOutputPath,
56
+ });
57
+ }
58
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../../src/lib/commands/signAndroid/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAS1D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC;IAED,mBAAmB;IACnB,SAAS;IACT,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,wCAAwC;IACxC,yHAAyH;IACzH,+FAA+F;IAC/F,gIAAgI;IAChI,mBAAmB;IACnB,cAAc;IAEd,sBAAsB;IACtB,4FAA4F;IAC5F,sDAAsD;IACtD,MAAM,cAAc,GAAG;QACrB,QAAQ;QACR,YAAY;QACZ,SAAS;QACT,OAAO;QACP,OAAO;QACP,eAAe;QACf,cAAc;QACd,UAAU;QACV,iBAAiB;QACjB,OAAO,CAAC,gBAAgB;QACxB,eAAe;QACf,OAAO,CAAC,cAAc;QACtB,oBAAoB;QACpB,OAAO,CAAC,mBAAmB;QAC3B,UAAU;QACV,OAAO;QACP,WAAW;KACZ,CAAC;IACF,MAAM,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,CAAC;QACd,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PluginApi } from '@rock-js/config';
2
+ export type SignFlags = {
3
+ verbose?: boolean;
4
+ apk: string;
5
+ output?: string;
6
+ keystore?: string;
7
+ keystorePassword?: string;
8
+ keyAlias?: string;
9
+ keyPassword?: string;
10
+ buildJsbundle?: boolean;
11
+ jsbundle?: string;
12
+ noHermes?: boolean;
13
+ };
14
+ export declare const registerSignCommand: (api: PluginApi) => void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/lib/commands/signAndroid/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAgDF,eAAO,MAAM,mBAAmB,QAAS,SAAS,SAoBjD,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { signAndroid } from './signAndroid.js';
2
+ const ARGUMENTS = [
3
+ {
4
+ name: 'apk',
5
+ description: 'APK file path',
6
+ },
7
+ ];
8
+ const OPTIONS = [
9
+ {
10
+ name: '--verbose',
11
+ description: '',
12
+ },
13
+ {
14
+ name: '--keystore <string>',
15
+ description: 'Path to keystore file',
16
+ },
17
+ {
18
+ name: '--keystore-password <string>',
19
+ description: 'Password for keystore file',
20
+ },
21
+ {
22
+ name: '--key-alias <string>',
23
+ description: 'Alias for key in keystore file',
24
+ },
25
+ {
26
+ name: '--key-password <string>',
27
+ description: 'Password for key in keystore file',
28
+ },
29
+ {
30
+ name: '--output <string>',
31
+ description: 'Path to the output APK file.',
32
+ },
33
+ {
34
+ name: '--build-jsbundle',
35
+ description: 'Build the JS bundle before signing.',
36
+ },
37
+ {
38
+ name: '--jsbundle <string>',
39
+ description: 'Path to the JS bundle to apply before signing.',
40
+ },
41
+ {
42
+ name: '--no-hermes',
43
+ description: 'Do not use Hermes to build the JS bundle.',
44
+ },
45
+ ];
46
+ export const registerSignCommand = (api) => {
47
+ api.registerCommand({
48
+ name: 'sign:android',
49
+ description: 'Sign the Android app with modified JS bundle.',
50
+ args: ARGUMENTS,
51
+ options: OPTIONS,
52
+ action: async (apkPath, flags) => {
53
+ await signAndroid({
54
+ apkPath,
55
+ keystorePath: flags.keystore,
56
+ keystorePassword: flags.keystorePassword,
57
+ keyAlias: flags.keyAlias,
58
+ keyPassword: flags.keyPassword,
59
+ outputPath: flags.output,
60
+ buildJsBundle: flags.buildJsbundle,
61
+ jsBundlePath: flags.jsbundle,
62
+ useHermes: !flags.noHermes,
63
+ });
64
+ },
65
+ });
66
+ };
67
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../src/lib/commands/signAndroid/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAe/C,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,eAAe;KAC7B;CACF,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,EAAE;KAChB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,uBAAuB;KACrC;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2CAA2C;KACzD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAc,EAAE,EAAE;IACpD,GAAG,CAAC,eAAe,CAAC;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAgB,EAAE,EAAE;YAC1C,MAAM,WAAW,CAAC;gBAChB,OAAO;gBACP,YAAY,EAAE,KAAK,CAAC,QAAQ;gBAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,YAAY,EAAE,KAAK,CAAC,QAAQ;gBAC5B,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type SignAndroidOptions = {
2
+ apkPath: string;
3
+ keystorePath?: string;
4
+ keystorePassword?: string;
5
+ keyAlias?: string;
6
+ keyPassword?: string;
7
+ outputPath?: string;
8
+ buildJsBundle?: boolean;
9
+ jsBundlePath?: string;
10
+ useHermes?: boolean;
11
+ };
12
+ export declare function signAndroid(options: SignAndroidOptions): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signAndroid.d.ts","sourceRoot":"","sources":["../../../../../src/lib/commands/signAndroid/signAndroid.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,iBAqF5D"}
@@ -0,0 +1,163 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { colorLink, getDotRockPath, intro, outro, relativeToCwd, RockError, spawn, spinner, } from '@rock-js/tools';
4
+ import AdmZip from 'adm-zip';
5
+ import { findAndroidBuildTool, getAndroidBuildToolsPath } from '../../paths.js';
6
+ import { buildJsBundle } from './bundle.js';
7
+ export async function signAndroid(options) {
8
+ validateOptions(options);
9
+ intro(`Modifying APK file`);
10
+ const tempPath = getSignOutputPath();
11
+ if (fs.existsSync(tempPath)) {
12
+ fs.rmSync(tempPath, { recursive: true });
13
+ }
14
+ const loader = spinner();
15
+ // 1. Build JS bundle if needed
16
+ if (options.buildJsBundle) {
17
+ const bundleOutputPath = path.join(tempPath, 'index.android.bundle');
18
+ loader.start('Building JS bundle...');
19
+ await buildJsBundle({
20
+ bundleOutputPath,
21
+ assetsDestPath: path.join(tempPath, 'res'),
22
+ sourcemapOutputPath: path.join(tempPath, 'index.android.bundle.packager.map'),
23
+ useHermes: options.useHermes ?? true,
24
+ });
25
+ loader.stop(`Built JS bundle: ${colorLink(relativeToCwd(bundleOutputPath))}`);
26
+ options.jsBundlePath = bundleOutputPath;
27
+ }
28
+ // 2. Initialize temporary APK file
29
+ const tempApkPath = path.join(tempPath, 'output-app.apk');
30
+ loader.start('Initializing output APK...');
31
+ try {
32
+ const zip = new AdmZip(options.apkPath);
33
+ // Remove old signature files
34
+ zip.deleteFile('META-INF/*');
35
+ zip.writeZip(tempApkPath);
36
+ }
37
+ catch (error) {
38
+ throw new RockError(`Failed to initialize output APK file: ${options.outputPath}`, { cause: error.stderr });
39
+ }
40
+ loader.stop(`Initialized output APK.`);
41
+ // 3. Replace JS bundle if provided
42
+ if (options.jsBundlePath) {
43
+ loader.start('Replacing JS bundle...');
44
+ await replaceJsBundle({
45
+ apkPath: tempApkPath,
46
+ jsBundlePath: options.jsBundlePath,
47
+ });
48
+ loader.stop(`Replaced JS bundle with ${colorLink(relativeToCwd(options.jsBundlePath))}.`);
49
+ }
50
+ // 4. Align APK file
51
+ loader.start('Aligning output APK file...');
52
+ const outputApkPath = options.outputPath ?? options.apkPath;
53
+ await alignApkFile(tempApkPath, outputApkPath);
54
+ loader.stop(`Created output APK file: ${colorLink(relativeToCwd(outputApkPath))}.`);
55
+ // 5. Sign APK file
56
+ loader.start('Signing the APK file...');
57
+ const keystorePath = options.keystorePath ?? 'android/app/debug.keystore';
58
+ await signApkFile({
59
+ apkPath: outputApkPath,
60
+ keystorePath,
61
+ keystorePassword: options.keystorePassword ?? 'pass:android',
62
+ keyAlias: options.keyAlias,
63
+ keyPassword: options.keyPassword,
64
+ });
65
+ loader.stop(`Signed the APK file with keystore: ${colorLink(keystorePath)}.`);
66
+ outro('Success 🎉.');
67
+ }
68
+ function validateOptions(options) {
69
+ if (!fs.existsSync(options.apkPath)) {
70
+ throw new RockError(`APK file not found "${options.apkPath}"`);
71
+ }
72
+ if (options.buildJsBundle && options.jsBundlePath) {
73
+ throw new RockError('The "--build-jsbundle" flag is incompatible with "--jsbundle". Pick one.');
74
+ }
75
+ if (options.jsBundlePath && !fs.existsSync(options.jsBundlePath)) {
76
+ throw new RockError(`JS bundle file not found "${options.jsBundlePath}"`);
77
+ }
78
+ }
79
+ async function replaceJsBundle({ apkPath, jsBundlePath, }) {
80
+ try {
81
+ const zip = new AdmZip(apkPath);
82
+ zip.deleteFile('assets/index.android.bundle');
83
+ zip.addLocalFile(jsBundlePath, 'assets', 'index.android.bundle');
84
+ zip.writeZip(apkPath);
85
+ }
86
+ catch (error) {
87
+ throw new RockError(`Failed to replace JS bundle in destination file: ${apkPath}}`, { cause: error });
88
+ }
89
+ }
90
+ function isSdkGTE35(versionString) {
91
+ const match = versionString.match(/build-tools\/([\d.]+)/);
92
+ if (!match)
93
+ return false;
94
+ return match[1].localeCompare('35.0.0', undefined, { numeric: true }) >= 0;
95
+ }
96
+ async function alignApkFile(inputApkPath, outputApkPath) {
97
+ const zipAlignPath = findAndroidBuildTool('zipalign');
98
+ if (!zipAlignPath) {
99
+ throw new RockError(`"zipalign" not found in Android Build-Tools directory: ${colorLink(getAndroidBuildToolsPath())}
100
+ Please follow instructions at: https://reactnative.dev/docs/set-up-your-environment?platform=android'`);
101
+ }
102
+ // See: https://developer.android.com/tools/zipalign#usage
103
+ const zipalignArgs = [
104
+ // aligns uncompressed .so files to the specified page size in KiB. Available since SDK 35
105
+ ...(isSdkGTE35(zipAlignPath) ? ['-P', '16'] : ['-p']),
106
+ '-f', // Overwrites existing output file.
107
+ '-v', // Overwrites existing output file.
108
+ '4', // alignment in bytes, e.g. '4' provides 32-bit alignment
109
+ inputApkPath,
110
+ outputApkPath,
111
+ ];
112
+ try {
113
+ await spawn(zipAlignPath, zipalignArgs);
114
+ }
115
+ catch (error) {
116
+ throw new RockError(`Failed to align APK file: ${zipAlignPath} ${zipalignArgs.join(' ')}`, { cause: error.stderr });
117
+ }
118
+ }
119
+ async function signApkFile({ apkPath, keystorePath, keystorePassword, keyAlias, keyPassword, }) {
120
+ if (!fs.existsSync(keystorePath)) {
121
+ throw new RockError(`Keystore file not found "${keystorePath}". Provide a valid keystore path using the "--keystore" option.`);
122
+ }
123
+ const apksignerPath = findAndroidBuildTool('apksigner');
124
+ if (!apksignerPath) {
125
+ throw new RockError(`"apksigner" not found in Android Build-Tools directory: ${colorLink(getAndroidBuildToolsPath())}
126
+ Please follow instructions at: https://reactnative.dev/docs/set-up-your-environment?platform=android'`);
127
+ }
128
+ // apksigner sign --ks-pass "pass:android" --ks "android/app/debug.keystore" --ks-key-alias "androiddebugkey" --key-pass "pass:android" "$OUTPUT2_APK"
129
+ const apksignerArgs = [
130
+ 'sign',
131
+ '--ks',
132
+ keystorePath,
133
+ '--ks-pass',
134
+ formatPassword(keystorePassword),
135
+ ...(keyAlias ? ['--ks-key-alias', keyAlias] : []),
136
+ ...(keyPassword ? ['--key-pass', formatPassword(keyPassword)] : []),
137
+ apkPath,
138
+ ];
139
+ try {
140
+ await spawn(apksignerPath, apksignerArgs);
141
+ }
142
+ catch (error) {
143
+ throw new RockError(`Failed to sign APK file: ${apksignerPath} ${apksignerArgs.join(' ')}`, { cause: error.stderr });
144
+ }
145
+ }
146
+ /**
147
+ * apksigner expects the password info to be prefixed by the password type.
148
+ *
149
+ * @see https://developer.android.com/tools/apksigner
150
+ */
151
+ function formatPassword(password) {
152
+ if (password.startsWith('pass:') ||
153
+ password.startsWith('env:') ||
154
+ password.startsWith('file:') ||
155
+ password === 'stdin') {
156
+ return password;
157
+ }
158
+ return `pass:${password}`;
159
+ }
160
+ function getSignOutputPath() {
161
+ return path.join(getDotRockPath(), 'android/sign');
162
+ }
163
+ //# sourceMappingURL=signAndroid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signAndroid.js","sourceRoot":"","sources":["../../../../../src/lib/commands/signAndroid/signAndroid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function toPascalCase(value: string): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPascalCase.d.ts","sourceRoot":"","sources":["../../../../src/lib/commands/toPascalCase.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC"}
@@ -0,0 +1,4 @@
1
+ export function toPascalCase(value) {
2
+ return value !== '' ? value[0].toUpperCase() + value.slice(1) : value;
3
+ }
4
+ //# sourceMappingURL=toPascalCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPascalCase.js","sourceRoot":"","sources":["../../../../src/lib/commands/toPascalCase.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function getAndroidSdkPath(): string;
2
+ export declare function getAndroidBuildToolsPath(): string;
3
+ /**
4
+ * Build tools are located in the <sdk-root>/build-tools/<version>/ directory.
5
+ */
6
+ export declare function findAndroidBuildTool(toolName: string): string | null;
7
+ export declare function versionCompare(first: string, second: string): number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/lib/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,WAShC;AAED,wBAAgB,wBAAwB,WAEvC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,iBAiBpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAgB3D"}