| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- const { copyFileSync, existsSync, mkdirSync, readFileSync } = require('node:fs')
- const { resolve } = require('node:path')
- const { spawnSync } = require('node:child_process')
- const repoRoot = resolve(__dirname, '..')
- const mobileRoot = resolve(repoRoot, 'mobile-app')
- const androidRoot = resolve(mobileRoot, 'android-capacitor')
- const isOEM = process.argv.includes('--oem')
- const variant = isOEM ? 'oem' : 'standard'
- const packageJson = JSON.parse(readFileSync(resolve(mobileRoot, 'package.json'), 'utf8'))
- const displayVersion = packageJson.version.replace(/^(\d+\.\d+\.\d+)-(\d+)$/, '$1.$2')
- const buildEnv = {
- ...process.env,
- VITE_OEM_VERSION: isOEM ? 'true' : 'false'
- }
- if (process.platform === 'win32') {
- const androidStudioJava = 'C:\\Program Files\\Android\\Android Studio\\jbr'
- const defaultAndroidSdk = process.env.LOCALAPPDATA
- ? resolve(process.env.LOCALAPPDATA, 'Android', 'Sdk')
- : ''
- // Capacitor 8 requires Java 17+. Prefer Android Studio's bundled JBR even
- // when the machine-wide JAVA_HOME still points to an older JDK.
- if (existsSync(androidStudioJava)) {
- buildEnv.JAVA_HOME = androidStudioJava
- }
- if (!buildEnv.ANDROID_HOME && defaultAndroidSdk && existsSync(defaultAndroidSdk)) {
- buildEnv.ANDROID_HOME = defaultAndroidSdk
- }
- }
- function run(command, args, cwd) {
- const result = spawnSync(command, args, {
- cwd,
- env: buildEnv,
- stdio: 'inherit'
- })
- if (result.error) {
- console.error(`[Pad Build] Failed to start ${command}: ${result.error.message}`)
- process.exit(1)
- }
- if (result.status !== 0) {
- process.exit(result.status ?? 1)
- }
- }
- console.log(`[Pad Build] Building ${variant} APK...`)
- run(
- process.execPath,
- [resolve(__dirname, 'build-pad-web.cjs'), ...(isOEM ? ['--oem'] : [])],
- mobileRoot
- )
- run(
- process.execPath,
- [resolve(mobileRoot, 'node_modules', '@capacitor', 'cli', 'bin', 'capacitor'), 'copy', 'android'],
- mobileRoot
- )
- if (process.platform === 'win32') {
- run(process.env.ComSpec || 'cmd.exe', ['/d', '/s', '/c', 'gradlew.bat assembleDebug'], androidRoot)
- } else {
- run('./gradlew', ['assembleDebug'], androidRoot)
- }
- const sourceApk = resolve(androidRoot, 'app', 'build', 'outputs', 'apk', 'debug', 'app-debug.apk')
- if (!existsSync(sourceApk)) {
- console.error(`[Pad Build] APK was not generated: ${sourceApk}`)
- process.exit(1)
- }
- const outputDir = resolve(mobileRoot, 'dist')
- const outputApk = resolve(
- outputDir,
- `Mini7-One-Pad-${displayVersion}-${variant}-debug.apk`
- )
- mkdirSync(outputDir, { recursive: true })
- copyFileSync(sourceApk, outputApk)
- console.log(`[Pad Build] APK ready: ${outputApk}`)
|