Skip to content

Commit 081e16e

Browse files
committed
feat(build): add x86_64 and x86 ABI support (#13)
Enables installation on Waydroid and Android emulators by cross-compiling for all four Android ABIs: arm64-v8a, armeabi-v7a, x86_64, and x86.
1 parent 87f015b commit 081e16e

4 files changed

Lines changed: 25 additions & 13 deletions

File tree

.github/workflows/build.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,17 @@ jobs:
2525
target:
2626
- aarch64-linux-android
2727
- armv7-linux-androideabi
28+
- x86_64-linux-android
29+
- i686-linux-android
2830
include:
2931
- target: aarch64-linux-android
3032
abi: arm64-v8a
3133
- target: armv7-linux-androideabi
3234
abi: armeabi-v7a
35+
- target: x86_64-linux-android
36+
abi: x86_64
37+
- target: i686-linux-android
38+
abi: x86
3339

3440
steps:
3541
- uses: actions/checkout@v4
@@ -61,8 +67,12 @@ jobs:
6167
export PATH="${NDK_BIN}:${PATH}"
6268
export CC_aarch64_linux_android="${NDK_BIN}/aarch64-linux-android26-clang"
6369
export CC_armv7_linux_androideabi="${NDK_BIN}/armv7a-linux-androideabi26-clang"
70+
export CC_x86_64_linux_android="${NDK_BIN}/x86_64-linux-android26-clang"
71+
export CC_i686_linux_android="${NDK_BIN}/i686-linux-android26-clang"
6472
export AR_aarch64_linux_android="${NDK_BIN}/llvm-ar"
6573
export AR_armv7_linux_androideabi="${NDK_BIN}/llvm-ar"
74+
export AR_x86_64_linux_android="${NDK_BIN}/llvm-ar"
75+
export AR_i686_linux_android="${NDK_BIN}/llvm-ar"
6676
6777
FLAGS=""
6878
if [ "$PROFILE" = "release" ]; then
@@ -120,9 +130,8 @@ jobs:
120130

121131
- name: Place release binaries
122132
run: |
123-
for pair in "arm64-v8a:aarch64-linux-android" "armeabi-v7a:armv7-linux-androideabi"; do
133+
for pair in "arm64-v8a:aarch64-linux-android" "armeabi-v7a:armv7-linux-androideabi" "x86_64:x86_64-linux-android" "x86:i686-linux-android"; do
124134
abi="${pair%%:*}"
125-
target="${pair##*:}"
126135
src="artifacts/bin-${abi}-release/ta-enhanced"
127136
dst="bin/${abi}/ta-enhanced"
128137
mkdir -p "bin/${abi}"
@@ -144,7 +153,7 @@ jobs:
144153
MODULE_ID=$(grep '^id=' module.prop | cut -d= -f2)
145154
VER="${{ steps.ver.outputs.version }}"
146155
147-
for pair in "arm64-v8a:aarch64-linux-android" "armeabi-v7a:armv7-linux-androideabi"; do
156+
for pair in "arm64-v8a:aarch64-linux-android" "armeabi-v7a:armv7-linux-androideabi" "x86_64:x86_64-linux-android" "x86:i686-linux-android"; do
148157
abi="${pair%%:*}"
149158
src="artifacts/bin-${abi}-debug/ta-enhanced"
150159
dst="bin/${abi}/ta-enhanced"

customize.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ fi
5050

5151
ABI=$(getprop ro.product.cpu.abi)
5252
case "$ABI" in
53-
arm64-v8a|armeabi-v7a) ;;
53+
arm64-v8a|armeabi-v7a|x86_64|x86) ;;
5454
*) abort " ❌ Unsupported ABI: $ABI" ;;
5555
esac
5656
BIN="$MODPATH/bin/$ABI/ta-enhanced"

package.sh

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,12 @@ for f in "${REQUIRED_FILES[@]}"; do
108108
fi
109109
done
110110

111-
if [ ! -f "$REPO_DIR/bin/arm64-v8a/ta-enhanced" ]; then
112-
echo "FATAL: bin/arm64-v8a/ta-enhanced not found. Run without --no-build or build manually." >&2
113-
exit 1
114-
fi
115-
116-
if [ ! -f "$REPO_DIR/bin/armeabi-v7a/ta-enhanced" ]; then
117-
echo "FATAL: bin/armeabi-v7a/ta-enhanced not found. Run without --no-build or build manually." >&2
118-
exit 1
119-
fi
111+
for abi in arm64-v8a armeabi-v7a x86_64 x86; do
112+
if [ ! -f "$REPO_DIR/bin/${abi}/ta-enhanced" ]; then
113+
echo "FATAL: bin/${abi}/ta-enhanced not found. Run without --no-build or build manually." >&2
114+
exit 1
115+
fi
116+
done
120117

121118
if [ ! -f "$REPO_DIR/webui/index.html" ]; then
122119
echo "FATAL: webui/index.html missing" >&2

rust/build.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ BIN_DIR="$PROJECT_ROOT/bin"
1010
declare -A ABI_TARGET=(
1111
[arm64-v8a]=aarch64-linux-android
1212
[armeabi-v7a]=armv7-linux-androideabi
13+
[x86_64]=x86_64-linux-android
14+
[x86]=i686-linux-android
1315
)
1416

1517
find_ndk() {
@@ -83,8 +85,12 @@ echo "NDK: $NDK_HOME"
8385
# cc-rs env vars so ring/other C deps find the right compiler
8486
export CC_aarch64_linux_android="$NDK_BIN/aarch64-linux-android26-clang"
8587
export CC_armv7_linux_androideabi="$NDK_BIN/armv7a-linux-androideabi26-clang"
88+
export CC_x86_64_linux_android="$NDK_BIN/x86_64-linux-android26-clang"
89+
export CC_i686_linux_android="$NDK_BIN/i686-linux-android26-clang"
8690
export AR_aarch64_linux_android="$NDK_BIN/llvm-ar"
8791
export AR_armv7_linux_androideabi="$NDK_BIN/llvm-ar"
92+
export AR_x86_64_linux_android="$NDK_BIN/llvm-ar"
93+
export AR_i686_linux_android="$NDK_BIN/llvm-ar"
8894

8995
if ! command -v cargo >/dev/null 2>&1; then
9096
echo "FATAL: cargo not found. Install Rust toolchain." >&2

0 commit comments

Comments
 (0)