Skip to content

Android

WangBin edited this page Apr 29, 2019 · 9 revisions

Supported host platforms:

  • Windows
  • Linux
  • macOS

Requirements:

  • environment var ANDROID_NDK
  • gcc>=4.8, or clang
  • Unified headers or not

Environment Variables:

  • USE_TOOLCHAIN: unset/empty, clang or gcc

Default Compiler:

Running ./avbuild.sh android[api] ["arch1 arch2..."] selects a default compiler, which is

  • gcc: if gcc exists, NDK<18
  • clang: if gcc does not exist, NDK>=18

Command:

./avbuild.sh android[api_level] "arch1 arch2 ..."  # default toolchain
USE_TOOLCHAIN=clang ./avbuild.sh android[api_level] "arch1 arch2 ..." # clang for all
./avbuild.sh android[api_level] "arch1 arch2-clang ..." # gcc toolchain for arch1, clang for arch2

api_level can be empty to use default value. Default is 14 for 32bit and 21 for 64bit.

Unified headers are used if present.

export FFSRC=/path/to/ffmpeg              # if no ffmpeg source fold under this dir
./avbuild.sh android                      # gcc build for default archs (armv5, armv7, arm64, x86)
./avbuild.sh android armv7                # gcc build for armv7
./avbuild.sh android16 "armv7 arm64"      # gcc build for armv7 api level 16 and arm64 api level 21(21 is min level for 64bit)
./avbuild.sh android "armv7-clang arm64"  # clang build for armv7, gcc build for arm64

The result dir struct is sdk-android-{gcc,clang}/{include,lib/{armeabi,armeabi-v7a,arm64,x86}}