Update Android documentation and add -upload-only flag

Default to 64-bit instead of 32-bit in the documentation. Also the NDK's
minimum API level is 21 nowadays. Finally add some notes on how to run
the resulting binaries. I was originally going to give adb instructions
(what I usually use) but that doesn't work for tests with test data, so
add a -upload-only flag to the script to help package everything.

Change-Id: I6fa7113679506e6f53b953df9146e7cf26b82e24
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/98449
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
David Benjamin
2026-07-07 14:36:09 -04:00
committed by boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 50dee225e8
commit 191d9aa000
2 changed files with 15 additions and 4 deletions
+9 -4
View File
@@ -80,17 +80,22 @@ version r16b of the NDK.
Unpack the Android NDK somewhere and export `ANDROID_NDK` to point to the
directory. Then run CMake like this:
cmake -DANDROID_ABI=armeabi-v7a \
-DANDROID_PLATFORM=android-19 \
cmake -DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-21 \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-GNinja -B build
Once you've run that, Ninja should produce Android-compatible binaries. You
can replace `armeabi-v7a` in the above with `arm64-v8a` and use API level 21 or
higher to build aarch64 binaries.
can replace `arm64-v8a` with `armeabi-v7a` in the above to build aarch64
binaries.
For other options, see the documentation in the toolchain file.
To run tests, you can use the `util/run_android_tests.go` script. Individual
binaries can also be pushed to the device with `adb`, but note that some tests
require test data. The `-upload-only` flag to `run_android_tests.go` may be
useful.
To debug the resulting binaries on an Android device with `gdb`, run the
commands below. Replace `ARCH` with the architecture of the target device, e.g.
`arm` or `arm64`.
+6
View File
@@ -46,6 +46,7 @@ var (
allTestsArgs = flag.String("all-tests-args", "", "Specifies space-separated arguments to pass to all_tests.go")
runnerArgs = flag.String("runner-args", "", "Specifies space-separated arguments to pass to ssl/test/runner")
jsonOutput = flag.String("json-output", "", "The file to output JSON results to.")
uploadOnly = flag.Bool("upload-only", false, "Skips running the tests and only uploads the data to /data/local/tmp/boringssl/tmp on the device.")
)
func enableUnitTests() bool {
@@ -410,6 +411,11 @@ func main() {
os.Exit(1)
}
if *uploadOnly {
fmt.Printf("Tests and data are now uploaded to /data/local/tmp/boringssl-tmp on the device.\n")
return
}
var unitTestExit int
if enableUnitTests() {
fmt.Printf("Running unit tests...\n")