Files
FridaBox/docs/BUILDING.md
T
Mahdi Karzari 5140bfc6a7 feat: deliver first successful FridaBox MVP
Integrate Frida Gadget into BlackBox guest startup, add the host workflow and controller tooling, and validate the complete sample hook flow on ARM64 Android 16.
2026-07-20 04:25:08 +03:30

1.7 KiB

Building

Prerequisites

  • JDK 21 (the requested/recommended toolchain).
  • Android SDK 35 and build tools.
  • Android NDK 29.0.13846066 when available. This build host only had the closely related complete NDK 29.0.14206865, which is recorded in docs/BASELINE.md.
  • Python 3.10 or newer.
  • Node.js 20 or newer and npm for reproducibly building Frida 17 Java agents.

Create local.properties with the SDK path, then fetch the pinned official Gadget:

python tools\fetch_frida_gadget.py

The script uses the GitHub Releases API and Python's standard lzma module. The build fails with a direct instruction if the binary is absent. No XZ archive is kept.

Install the pinned Java bridge/compiler and build the controller agents:

npm ci
python tools\build_frida_agents.py

Frida 17 no longer bundles runtime bridges into API-loaded GumJS agents. The compiled files under scripts/dist/ are reproducible from the source scripts, package.json, and package-lock.json.

On Windows, if the repository path contains spaces, create a no-space junction and set the Bcore-only native path override:

New-Item -ItemType Junction -Path D:\FridaBoxBuild -Target 'D:\path with spaces\FridaBox'
$env:FRIDABOX_NDK_PROJECT_DIR='D:\FridaBoxBuild\Bcore'

Build and test:

.\gradlew.bat clean
.\gradlew.bat :sample-guest:assembleDebug
.\gradlew.bat :app:assembleDebug
.\gradlew.bat test
.\gradlew.bat :app:check

The debug host build depends on the sample build and copies its byte-identical APK into generated debug assets. Generated sample APKs are not source-controlled. The final host output is under app/build/outputs/apk/debug/ and is ARM64-only.