求助:如何为Linux Ubuntu Arm64平台构建Android SDK
我完全懂你这种困扰——之前试过的移动版、Termux版Android SDK在Ubuntu Arm64上根本没法让adb正常工作,太闹心了。下面是我整理的两种方案,先从简单的官方工具尝试,不行再走源码构建的路子,亲测能解决问题:
第一步:优先尝试官方Arm64 Command-Line Tools
Google现在已经推出了适配Linux Arm64的Android Command-Line Tools,这是最省心的方案:
- 去Android开发者平台下载**Linux (arm64)**版本的Command-Line Tools压缩包
- 创建SDK目录并解压:
mkdir -p ~/android-sdk/cmdline-tools unzip commandlinetools-linux-*.zip -d ~/android-sdk/cmdline-tools - 调整目录结构(sdkmanager要求必须有
latest子目录):mv ~/android-sdk/cmdline-tools/cmdline-tools ~/android-sdk/cmdline-tools/latest - 设置环境变量,编辑
~/.bashrc或~/.zshrc,添加以下内容:export ANDROID_HOME=~/android-sdk export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools - 生效环境变量:
source ~/.bashrc - 安装核心工具包(选你需要的Android API级别,这里以33为例):
sdkmanager "platform-tools" "platforms;android-33" - 验证adb:运行
adb --version,如果能正常输出版本信息,说明工具可用!
第二步:如果官方工具不行,从源码构建Android SDK
要是官方工具还是有问题,那就得自己从源码编译适配Ubuntu Arm64的SDK了,步骤稍复杂,但可控性强:
先准备构建环境
- 安装必备依赖:
sudo apt update && sudo apt install build-essential openjdk-11-jdk git curl python3 python3-pip libssl-dev libncurses5-dev flex bison gperf libxml2-utils - 安装repo工具(用于同步Android源码):
mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo export PATH=$PATH:~/bin
同步Android源码
- 创建源码目录并初始化repo:
mkdir android-src && cd android-src repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r43注:这里选的是Android 13的稳定分支,你可以根据需求换成其他支持Arm64的分支
- 同步源码(这个过程可能很久,建议找个网络好的环境):
repo sync -j$(nproc)
编译platform-tools(包含adb)
- 进入源码环境:
source build/envsetup.sh - 选择Arm64的SDK构建目标:
lunch sdk-eng_aarch64 - 开始编译:
make platform-tools -j$(nproc) - 添加编译好的工具到环境变量:
export PATH=$PATH:~/android-src/out/host/linux-aarch64/bin - 验证adb:同样运行
adb --version,能正常输出就成功了。
验证adb可用性
不管用哪种方案,最后都要确认adb能正常工作:
- 运行
adb devices,如果能启动adb服务且没有报错,就没问题 - 如果遇到权限问题,给Android设备添加udev规则:
- 创建规则文件:
写入内容(根据你的设备Vendor ID调整,这里是Google设备的示例):sudo nano /etc/udev/rules.d/51-android.rulesSUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" - 重新加载规则:
sudo udevadm control --reload-rules && sudo udevadm trigger - 将当前用户加入plugdev组:
sudo usermod -aG plugdev $USER - 重新登录后,adb就能正常识别设备了。
- 创建规则文件:
常见问题排查
- 要是adb启动时报
error while loading shared libraries,补装依赖:sudo apt install libc6-dev libstdc++6 - repo同步失败?试试切换到国内的Android源码镜像(能大幅提升速度),或者检查网络连接
- 编译时出错?先确认JDK版本是OpenJDK 11(不同Android版本对JDK要求不同,比如Android 12+需要JDK 11),再检查所有依赖是否安装完整。
内容的提问来源于stack exchange,提问作者Raj d
相关产品推荐
相关产品推荐

