android: Set minimum to API level 21

[skip ci]
This commit is contained in:
rdb 2024-12-26 15:00:55 +01:00
parent 5965d5bbec
commit 598a94abfc
3 changed files with 14 additions and 12 deletions

View File

@ -194,9 +194,9 @@ These commands show how to compile wheels for the supported Android ABIs:
```bash
export ANDROID_SDK_ROOT=/home/rdb/local/android
python3.8 makepanda/makepanda.py --everything --outputdir built-droid-arm64 --arch arm64 --target android-21 --threads 6 --wheel
python3.8 makepanda/makepanda.py --everything --outputdir built-droid-armv7a --arch armv7a --target android-19 --threads 6 --wheel
python3.8 makepanda/makepanda.py --everything --outputdir built-droid-armv7a --arch arm --target android-21 --threads 6 --wheel
python3.8 makepanda/makepanda.py --everything --outputdir built-droid-x86_64 --arch x86_64 --target android-21 --threads 6 --wheel
python3.8 makepanda/makepanda.py --everything --outputdir built-droid-x86 --arch x86 --target android-19 --threads 6 --wheel
python3.8 makepanda/makepanda.py --everything --outputdir built-droid-x86 --arch x86 --target android-21 --threads 6 --wheel
```
It is now possible to use the generated wheels with `build_apps`, as explained

View File

@ -485,6 +485,8 @@ elif not CrossCompiling():
else:
if target_arch == 'amd64':
target_arch = 'x86_64'
if target_arch == 'arm' and target == 'android':
target_arch = 'armv7a'
PLATFORM = '{0}-{1}'.format(target, target_arch)
@ -1371,10 +1373,10 @@ def CompileCxx(obj,src,opts):
cmd += ' -gcc-toolchain ' + SDK["ANDROID_GCC_TOOLCHAIN"].replace('\\', '/')
cmd += ' -ffunction-sections -funwind-tables'
cmd += ' -target ' + SDK["ANDROID_TRIPLE"]
if arch == 'armv7a':
if arch in ('armv7a', 'arm'):
cmd += ' -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16'
elif arch == 'arm':
cmd += ' -march=armv5te -mtune=xscale -msoft-float'
#elif arch == 'arm':
# cmd += ' -march=armv5te -mtune=xscale -msoft-float'
elif arch == 'mips':
cmd += ' -mips32'
elif arch == 'mips64':
@ -1897,7 +1899,7 @@ def CompileLink(dll, obj, opts):
cmd += ' -gcc-toolchain ' + SDK["ANDROID_GCC_TOOLCHAIN"].replace('\\', '/')
cmd += " -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now"
cmd += ' -target ' + SDK["ANDROID_TRIPLE"]
if arch == 'armv7a':
if arch in ('armv7a', 'arm'):
cmd += " -march=armv7-a -Wl,--fix-cortex-a8"
elif arch == 'mips':
cmd += ' -mips32'

View File

@ -357,11 +357,11 @@ def SetTarget(target, arch=None):
elif target == 'android' or target.startswith('android-'):
if arch is None:
# If compiling on Android, default to same architecture. Otherwise, arm.
# If compiling on Android, default to same architecture.
if host == 'android':
arch = host_arch
else:
arch = 'armv7a'
exit('Specify an Android architecture using --arch')
if arch == 'aarch64':
arch = 'arm64'
@ -371,12 +371,9 @@ def SetTarget(target, arch=None):
target, _, api = target.partition('-')
if api:
ANDROID_API = int(api)
elif arch in ('mips64', 'arm64', 'x86_64'):
# 64-bit platforms were introduced in Android 21.
ANDROID_API = 21
else:
# Default to the lowest API level still supported by Google.
ANDROID_API = 19
ANDROID_API = 21
# Determine the prefix for our gcc tools, eg. arm-linux-androideabi-gcc
global ANDROID_ABI, ANDROID_TRIPLE
@ -1422,6 +1419,9 @@ def GetThirdpartyDir():
elif (target == 'android'):
THIRDPARTYDIR = base + "/android-libs-%s/" % (target_arch)
if target_arch == 'armv7a' and not os.path.isdir(THIRDPARTYDIR):
THIRDPARTYDIR = base + "/android-libs-arm/"
elif (target == 'emscripten'):
THIRDPARTYDIR = base + "/emscripten-libs/"