-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild_apk.bat
More file actions
243 lines (226 loc) · 8.05 KB
/
build_apk.bat
File metadata and controls
243 lines (226 loc) · 8.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
@echo off
setlocal EnableDelayedExpansion
set "SHOULD_PAUSE=1"
if defined NOTE_CONNECTION_NO_PAUSE set "SHOULD_PAUSE=0"
if /I "%CI%"=="true" set "SHOULD_PAUSE=0"
REM ========================================================
REM NoteConnection APK Build Script
REM Version: 1.1.1
REM Description: Automated build pipeline from Web to Android APK
REM Author: Jacob
REM ========================================================
echo.
echo ===============================================================================
echo NoteConnection Mobile Build Pipeline
echo ===============================================================================
echo.
REM --------------------------------------------------------
REM 1. Environment Detection & Pre-checks
REM --------------------------------------------------------
echo [1/8] Inspecting Environment...
REM Check Node.js
where node >nul 2>&1
if %errorlevel% neq 0 (
echo.
echo [ERROR] Node.js is NOT installed or NOT in your PATH.
echo Core build tools ^(npm^) are required.
echo [ACTION] Please install Node.js ^(LTS^) from: https://nodejs.org/
echo.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
for /f "delims=" %%v in ('node -v') do set NODE_VERSION=%%v
echo [OK] Node.js Found: !NODE_VERSION!
REM Check Java (JDK)
where javac >nul 2>&1
if %errorlevel% neq 0 (
echo.
echo [ERROR] Java JDK is NOT installed or NOT in your PATH.
echo Android Gradle build requires JDK 21 or newer.
echo [ACTION] Please install OpenJDK 21+ and set JAVA_HOME accordingly.
echo.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
for /f "tokens=2 delims= " %%v in ('javac -version 2^>^&1') do set JAVA_VERSION=%%v
echo [OK] Java JDK Found: !JAVA_VERSION!
set "JAVA_MAJOR=!JAVA_VERSION!"
for /f "tokens=1 delims=." %%m in ("!JAVA_VERSION!") do set "JAVA_MAJOR=%%m"
if "!JAVA_MAJOR!"=="1" (
for /f "tokens=2 delims=." %%m in ("!JAVA_VERSION!") do set "JAVA_MAJOR=%%m"
)
set /a JAVA_MAJOR_NUM=0+!JAVA_MAJOR! >nul 2>&1
if !JAVA_MAJOR_NUM! lss 21 (
echo.
echo [ERROR] Detected JDK major version !JAVA_MAJOR_NUM!, but this project requires JDK 21 or newer.
echo [ACTION] Set JAVA_HOME to a JDK 21+ installation and ensure javac resolves to major version 21+.
echo.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
REM Check JAVA_HOME
if "%JAVA_HOME%"=="" (
echo [WARN] JAVA_HOME is not set. Gradle might assume a default JDK.
echo If build fails, set JAVA_HOME to your JDK installation path.
) else (
echo [OK] JAVA_HOME: %JAVA_HOME%
)
REM Check Android SDK
if "%ANDROID_HOME%"=="" (
echo.
echo [WARN] ANDROID_HOME environment variable is NOT set.
echo Gradle may fail if it cannot locate the Android SDK.
echo [ACTION] Set ANDROID_HOME to your SDK location ^(e.g., %%LOCALAPPDATA%%\Android\Sdk^).
) else (
if exist "%ANDROID_HOME%" (
echo [OK] Android SDK: %ANDROID_HOME%
) else (
echo [WARN] ANDROID_HOME is set but the directory does not exist:
echo %ANDROID_HOME%
)
)
REM --------------------------------------------------------
REM 2. Dependency Verification
REM --------------------------------------------------------
echo.
echo [2/8] Verifying Dependencies...
if not exist "node_modules" (
echo [INFO] 'node_modules' missing. Installing project dependencies...
call npm install
if !errorlevel! neq 0 (
echo.
echo [ERROR] 'npm install' failed.
echo Please check your internet connection or npm configuration.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
echo [OK] Dependencies installed.
) else (
echo [OK] 'node_modules' exists. Skipping install.
)
REM --------------------------------------------------------
REM 3. Web Assets Build
REM --------------------------------------------------------
echo.
echo [3/8] Building Web Frontend...
echo (This may take a moment...)
call npm run build
if %errorlevel% neq 0 (
echo.
echo [ERROR] Web build failed ^(npm run build^).
echo Check the output above for compilation errors.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
echo [OK] Web assets compiled successfully.
REM --------------------------------------------------------
REM 4. Directory Standardization
REM --------------------------------------------------------
echo.
echo [4/8] Standardizing Output Directory...
REM Capacitor webDir is configured as dist/src/frontend in capacitor.config.ts.
if exist "dist\src\frontend" (
echo [OK] 'dist\src\frontend' exists.
) else (
echo [ERROR] Expected build output 'dist\src\frontend' NOT found.
echo Build might have produced a different structure.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
REM --------------------------------------------------------
REM 5. Capacitor Initialization
REM --------------------------------------------------------
echo.
echo [5/8] Configuring Capacitor Bridge...
if not exist "capacitor.config.ts" (
echo [INFO] Initializing Capacitor project...
call npx cap init "Knowledge Planet" "com.jacob.noteconnection" --web-dir "dist/src/frontend"
) else (
echo [OK] Capacitor config found.
)
REM --------------------------------------------------------
REM 6. Android Platform Setup
REM --------------------------------------------------------
echo.
echo [6/8] Configuring Android Platform...
if not exist "android" (
echo [INFO] Adding Android platform support...
call npx cap add android
if !errorlevel! neq 0 (
echo.
echo [ERROR] Failed to add Android platform.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
) else (
echo [OK] Android platform directory exists.
)
REM --------------------------------------------------------
REM 7. Native Asset Sync
REM --------------------------------------------------------
echo.
echo [7/8] Syncing Web Assets to Native...
call npx cap sync android
if %errorlevel% neq 0 (
echo.
echo [ERROR] 'npx cap sync android' failed.
echo Ensure you have a valid internet connection for Gradle dependencies.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
call node scripts\align-capacitor-java-compat.js --java-major !JAVA_MAJOR_NUM!
if %errorlevel% neq 0 (
echo.
echo [ERROR] Failed to align generated Capacitor Java compatibility settings.
echo Check scripts\align-capacitor-java-compat.js and android\app\capacitor.build.gradle.
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
echo [OK] Assets synced to android/app/src/main/assets/public.
REM --------------------------------------------------------
REM 8. Gradle Build
REM --------------------------------------------------------
echo.
echo [8/8] compiling APK with Gradle...
echo (This is the heavy lifting. Please wait...)
cd android
if not exist "gradlew.bat" (
echo.
echo [ERROR] 'gradlew.bat' not found in 'android' directory.
echo The Android platform might be corrupted.
echo Try deleting the 'android' folder and re-running this script.
cd ..
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
call gradlew.bat assembleDebug
if %errorlevel% neq 0 (
echo.
echo [ERROR] Gradle build failed.
echo.
echo [TROUBLESHOOTING]
echo 1. Check JAVA_HOME matches JDK 21 or newer.
echo 2. Ensure Android SDK is installed.
echo 3. Try running 'cd android && gradlew clean' manually.
cd ..
if "%SHOULD_PAUSE%"=="1" pause
exit /b 1
)
cd ..
REM --------------------------------------------------------
REM Success Summary
REM --------------------------------------------------------
echo.
echo ===============================================================================
echo BUILD SUCCESSFUL
echo ===============================================================================
echo.
echo APK Path:
echo %~dp0android\app\build\outputs\apk\debug\app-debug.apk
echo.
echo [NEXT STEPS]
echo 1. Transfer the APK to your Android device.
echo 2. Enable "Install from Unknown Sources" if prompted.
echo 3. Enjoy NoteConnection Mobile!
echo.
if "%SHOULD_PAUSE%"=="1" pause