Merge pull request #687 from xishang0128/master

feat: add android build
This commit is contained in:
Toby 2023-09-14 15:41:30 -07:00 committed by GitHub
commit c73570f582
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 1 deletions

View File

@ -26,7 +26,16 @@ jobs:
with:
python-version: "3.11"
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r25b
add-to-path: false
local-cache: true
- name: Run build script
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export HY_APP_PLATFORMS=$(sed 's/\r$//' platforms.txt | awk '!/^#/ && !/^$/' | paste -sd ",")
python hyperbole.py build -r

View File

@ -26,7 +26,16 @@ jobs:
with:
python-version: "3.11"
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r25b
add-to-path: false
local-cache: true
- name: Run build script
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export HY_APP_PLATFORMS=$(sed 's/\r$//' platforms.txt | awk '!/^#/ && !/^$/' | paste -sd ",")
python hyperbole.py build -r

View File

@ -204,13 +204,31 @@ def cmd_build(pprof=False, release=False):
out_name += ".exe"
env = os.environ.copy()
env["CGO_ENABLED"] = "0"
env["GOOS"] = os_name
if arch in ARCH_ALIASES:
for k, v in ARCH_ALIASES[arch].items():
env[k] = v
else:
env["GOARCH"] = arch
if os_name == "android":
env["CGO_ENABLED"] = "1"
ANDROID_NDK_HOME = (
os.environ.get("ANDROID_NDK_HOME")
+ "/toolchains/llvm/prebuilt/linux-x86_64/bin"
)
if arch == "arm64":
env["CC"] = ANDROID_NDK_HOME + "/aarch64-linux-android33-clang"
elif arch == "armv7":
env["CC"] = ANDROID_NDK_HOME + "/armv7a-linux-androideabi33-clang"
elif arch == "386":
env["CC"] = ANDROID_NDK_HOME + "/i686-linux-android33-clang"
elif arch == "amd64":
env["CC"] = ANDROID_NDK_HOME + "/x86_64-linux-android33-clang"
else:
print("Unsupported arch for android: %s" % arch)
return
else:
env["CGO_ENABLED"] = "0"
plat_ldflags = ldflags.copy()
plat_ldflags.append("-X")

View File

@ -22,6 +22,12 @@ linux/s390x
linux/mipsle
linux/mipsle-sf
# Android
android/386
android/amd64
android/armv7
android/arm64
# FreeBSD
freebsd/amd64
freebsd/amd64-avx