Skip to content

Android Anti Virus

Android Anti Virus #1

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
build-test:
name: build & test (${{ matrix.os }} / ${{ matrix.cc }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-24.04, cc: gcc, cxx: g++ }
- { os: ubuntu-24.04, cc: clang, cxx: clang++ }
- { os: ubuntu-26.04, cc: gcc, cxx: g++ }
- { os: ubuntu-26.04, cc: clang, cxx: clang++ }
- { os: macos-latest, cc: clang, cxx: clang++ }
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
steps:
- uses: actions/checkout@v4
- name: Install zlib (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y zlib1g-dev
- name: Configure
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DAAV_BUILD_TESTS=ON
- name: Build
run: cmake --build build -j
- name: Test
run: ctest --test-dir build --output-on-failure
android:
name: android build (${{ matrix.abi }})
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
abi: [arm64-v8a, armeabi-v7a, x86_64]
steps:
- uses: actions/checkout@v4
- name: Cross-compile engine + CLI (NDK, API 24)
run: |
NDK="${ANDROID_NDK_LATEST_HOME:-${ANDROID_NDK_HOME:-$ANDROID_NDK_ROOT}}"
echo "Using NDK: $NDK"
cmake -S . -B build/android \
-DCMAKE_TOOLCHAIN_FILE="$NDK/build/cmake/android.toolchain.cmake" \
-DANDROID_ABI=${{ matrix.abi }} \
-DANDROID_PLATFORM=android-24 \
-DAAV_BUILD_TESTS=OFF -DAAV_BUILD_TOOLS=OFF
cmake --build build/android -j
- name: Show artifacts
run: file build/android/lib/libaav.a build/android/bin/aavscan
asan:
name: asan + ubsan (clang)
runs-on: ubuntu-24.04
env:
CC: clang
CXX: clang++
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y zlib1g-dev
- name: Configure (asan preset)
run: cmake --preset asan -DAAV_BUILD_TESTS=ON
- name: Build
run: cmake --build build/asan -j
- name: Test
run: ctest --test-dir build/asan --output-on-failure
format:
name: clang-format
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y clang-format
- name: Check formatting (informational)
continue-on-error: true
run: |
files=$(git ls-files '*.cc' '*.h' \
| grep -E '^(include|src|apps|tests|fuzz|android)/' \
| grep -v '/third_party/')
echo "$files"
clang-format --dry-run --Werror $files
fuzz-build:
name: fuzz build + smoke (clang)
runs-on: ubuntu-24.04
env:
CC: clang
CXX: clang++
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y zlib1g-dev
- name: Configure (fuzzers)
run: cmake -S . -B build/fuzz -DAAV_BUILD_FUZZERS=ON -DAAV_BUILD_TOOLS=OFF
- name: Build fuzzer
run: cmake --build build/fuzz --target fuzz_dexfile -j
- name: Smoke run (non-blocking; surfaces legacy parser bugs)
continue-on-error: true
run: ./build/fuzz/bin/fuzz_dexfile -max_total_time=30 -runs=200000
android-app:
name: android app (assembleDebug)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
- uses: android-actions/setup-android@v3
- name: Install SDK packages
run: >-
sdkmanager "platforms;android-36" "build-tools;36.0.0"
"ndk;29.0.14206865" "cmake;3.22.1"
- name: Assemble debug APK (Java + JNI bridge + engine for all ABIs)
working-directory: android
run: ./gradlew :app:assembleDebug --no-daemon --stacktrace
- uses: actions/upload-artifact@v4
with:
name: aav-app-debug-apk
path: android/app/build/outputs/apk/debug/*.apk
if-no-files-found: error