Skip to content

fix(android): use NDK with CGO_ENABLED=1 for proper DNS resolution #8

fix(android): use NDK with CGO_ENABLED=1 for proper DNS resolution

fix(android): use NDK with CGO_ENABLED=1 for proper DNS resolution #8

Workflow file for this run

name: android-arm64-build
on:
push:
branches:
- android-upstream-release
workflow_dispatch:
inputs:
source_ref:
description: Upstream ref to build (branch, tag, or SHA)
required: false
default: main
type: string
permissions:
contents: write
jobs:
build-android-arm64:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: router-for-me/CLIProxyAPI
ref: ${{ github.event.inputs.source_ref || 'main' }}
fetch-depth: 0
- name: Capture upstream commit metadata
id: upstream_meta
env:
SOURCE_REF: ${{ github.event.inputs.source_ref || 'main' }}
run: |
echo "source_ref=${SOURCE_REF}" >> "$GITHUB_OUTPUT"
echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
echo "short_sha=$(git rev-parse --short=12 HEAD)" >> "$GITHUB_OUTPUT"
VERSION=$(git describe --tags --always 2>/dev/null || echo "dev")
VERSION="${VERSION#v}"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "build_date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT"
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Install Android NDK
run: |
ANDROID_NDK_VERSION=r27c
wget -q "https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip" -O /tmp/ndk.zip
unzip -q /tmp/ndk.zip -d /tmp
echo "ANDROID_NDK_HOME=/tmp/android-ndk-${ANDROID_NDK_VERSION}" >> "$GITHUB_ENV"
- name: Build (Android arm64)
env:
CGO_ENABLED: "1"
GOOS: android
GOARCH: arm64
run: |
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++"
go build \
-ldflags "-s -w -X 'main.Version=${{ steps.upstream_meta.outputs.version }}' -X 'main.Commit=${{ steps.upstream_meta.outputs.short_sha }}' -X 'main.BuildDate=${{ steps.upstream_meta.outputs.build_date }}'" \
-o CLIProxyAPI ./cmd/server
file CLIProxyAPI
tar -czf CLIProxyAPI-android-arm64.tar.gz CLIProxyAPI
zip -q CLIProxyAPI-android-arm64.zip CLIProxyAPI
- name: Upload workflow artifacts
uses: actions/upload-artifact@v4
with:
name: CLIProxyAPI-android-arm64
path: |
CLIProxyAPI-android-arm64.tar.gz
CLIProxyAPI-android-arm64.zip
- name: Create release with Android artifacts
if: github.ref_name == 'android-upstream-release'
uses: softprops/action-gh-release@v2
with:
tag_name: android-arm64-v${{ steps.upstream_meta.outputs.version }}
name: Android arm64 v${{ steps.upstream_meta.outputs.version }}
target_commitish: ${{ github.sha }}
prerelease: false
generate_release_notes: true
body: |
Built from `router-for-me/CLIProxyAPI@${{ steps.upstream_meta.outputs.sha }}`
Source ref: `${{ steps.upstream_meta.outputs.source_ref }}`
Version: `${{ steps.upstream_meta.outputs.version }}`
files: |
CLIProxyAPI-android-arm64.tar.gz
CLIProxyAPI-android-arm64.zip