安卓手机/平板运行Android Studio并打包应用、真机调试的笔记
iPupil
2025年03月18日 10:35
收录于文集
共2篇
科技数码指南

一般来说,通过 Android Termux 部署 Linux 容器运行原生的 arm64 应用可以做到即装即用,问题很少。但 Android Studio 基于 IDEA 社区版,居然只有 Linux x86 版本,而没有 Linux arm64 版本。不过它的绝大部分组件都是基于 Java 的,我们可以通过修改一些文件和配置使它可以在 Linux arm64 的容器中运行。除了 XML 布局预览器、模拟器外,其他功能应该都可以正常使用。

Tips: 本文的 Linux 容器环境基于 UP 前一篇专栏(高通平台下Termux Chroot/Proot容器实现全局硬件加速的笔记​)的配置,但理论上同时适用于 Proot 和 Chroot 容器,而且 GPU 加速开启与否都行。


一、安装步骤

首先安装一下必要的工具。

sudo apt update && sudo apt upgrade -y

sudo apt install wget ark -y

下载 Android Studio、SDK、NDK、模拟器补丁。

cd ~/下载

wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2024.2.2.15/android-studio-2024.2.2.15-linux.tar.gz https://github.com/lzhiyong/android-sdk-tools/releases/download/35.0.2/android-sdk-tools-static-aarch64.zip https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-aarch64.zip https://github.com/lzhiyong/termux-ndk/releases/download/android-ndk/android-ndk-r27b-aarch64.zip https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-21.0.5-linux-aarch64-b750.29.tar.gz

由于在 Termux 的 Linux 容器里暂不知如何运行真正的 Android 模拟器,故使用 Victor Laureano 大佬提供的补丁文件使 Android Studio 误认为已安装模拟器,避免报错。补丁文件请到文末参考资料的第二个链接里自行下载(在“SDK download error (emulator)”段落中)。

解压 Android Studio 安装包。

mkdir ~/Android

tar -zxvf ./android-studio-2024.2.2.15-linux.tar.gz -C ~/Android/

使用 arm64 架构的 JBR(Android Studio 内置的 OpenJDK 21 运行环境) 的覆盖原本的 x86 架构的 JBR。

tar -zxvf ./jbr_jcef-21.0.5-linux-aarch64-b750.29.tar.gz

cp -f ./jbr_jcef-21.0.5-linux-aarch64-b750.29 ~/Android/android-studio/jbr/

添加相关的环境变量。编辑 ~/.profile 文件,在文件末尾新增一行,添加如下的配置。

export ANDROID_HOME=$HOME/Android/Sdk

export ANDROID_USER_HOME=$HOME/.android

export ANDROID_EMULATOR_HOME=$ANDROID_USER_HOME

export ANDROID_AVD_HOME=$ANDROID_EMULATOR_HOME/avd/

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools

使配置生效。

source ~/.profile

执行以下命令启动 Android Studio。可以在桌面添加启动文件,方便以后打开。

~/Android/android-studio/bin/studio.sh


二、SDK、NDK配置

第一次打开 Android Studio 会自动弹出安装向导窗口,选择“自定义”的选项,取消勾选 Android Virtual Device,我们后面会通过补丁文件解决模拟器报错的问题。

安装向导完成后,用 Ark 打开模拟器补丁文件 emulator-ultracompact.zip,将其中的 emulator 目录解压到 ~/Android/Sdk 目录中。

用 Ark 打开 v34.0.3 版本的 android-sdk-tools-static-aarch64.zip,将其中的 platform-tools 目录解压并覆盖到 ~/Android/Sdk 目录中。v35.0.2 版本的 adb 有点问题,所以不推荐使用该版本的 platform-tools。

在 Android Studio 的欢迎窗口打开 SDK Manager,勾选自己需要的 Build-Tools 和 NDK,注意版本对应,因为后面要替换相应的文件。例如 27.1.12297006 版本对应的 NDK 为 r27b,lzhiyong 大佬编译的 arm64 原生 NDK 恰好有这个版本 。

SDK Manager 保存设置并下载文件完毕后,效仿前面替换 platform-tools 的操作,分别替换对应版本的 build-tools 和 ndk 文件。两者也均在 ~/Android/Sdk 目录中。

替换完成后可删除~/下载目录内前面下载的安装包等多余的文件,以节省存储空间。

新建一个项目进入 Android Studio 的主界面。此时若出现软件窗口的标题栏不显示的问题,可以按 Ctrl + Alt + S 快捷键打开设置,关闭 Appearance & Behavior -> Appearance -> UI Options -> Merge main menu with window title 选项,然后重启软件。若仍未解决,可删除当前版本的 Android Studio 和 ~/.config/Google 目录下对应版本的配置目录,安装 2023.3.1.20 版本(https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.3.1.20/android-studio-2023.3.1.20-linux.tar.gz)。安装完成后注意重新覆盖 JBR。

在项目根目录的 gradle.properties 文件添加如下的配置,指定 SDK 和 NDK 的路径。注意将“<你的用户名>”和“<覆盖过文件的版本>”替换为自己的,“<覆盖过文件的版本>”应与项目 app/build.gradlecompileSdk 相对应。

sdk.dir=/home/<你的用户名>/Android/Sdk

ndk.dir=/home/<你的用户名>/Android/Sdk/ndk/27.1.12297006

android.aapt2FromMavenOverride=/home/<你的用户名>/Android/Sdk/build-tools/<覆盖过文件的版本>/aapt2

添加配置后重新执行同步操作,若下载速度慢,可换国内镜像源,参考教程:https://blog.csdn.net/github_74110837/article/details/143092695


三、运行、调试应用

在安卓设置的“开发者选项 -> 调试 -> 无线调试”(需要安卓版本为 11 或以上中打开无线调试的开关,点击“使用配对码配对设备”。让弹出来的配对对话框保持开启,通过小窗或分屏打开 Termux 或 Termux:X11 ,在 Linux 容器内使用 adb pair 127.0.0.1:<配对的端口号> 命令进行配对。输入配对码成功后,可使用 adb devices 命令查看是否连接成功。若没有列出自己的设备,可关闭配对对话框,使用 adb connect 127.0.0.1:<无线调试的端口号> 命令进行连接。注意两个端口号的区别,配对成功后只需无线调试的端口号进行连接,无需再次配对。

若使用 adb pair 127.0.0.1:<配对的端口号> 命令时报错 adb: unknown command pair,而且使用 adb --version 命令时有输出类似于以下的信息,则你很有可能安装了 Debian 软件源里较低版本的 adb (adb pair 命令需要 adb 版本 30 及以上),可以使用命令 sudo apt purge adb -y 卸载该版本的 adb 即可正常使用 adb pair 命令。

$ adb --version

Android Debug Bridge version 1.0.41

Version 29.0.6-debian

Installed as /usr/lib/android-sdk/platform-tools/adb

关于安卓项目的运行、调试、打包成 APK 文件等方法,直接参考 PC 版本的教程即可,本文不再赘述。


【相关资源】

  • android-sdk-tools (lzhiyong):https://github.com/lzhiyong/android-sdk-tools

  • termux-ndk (lzhiyong):https://github.com/lzhiyong/termux-ndk

  • Android Studio 历史版本存档(网站语言切换为英文可正常显示):https://developer.android.google.cn/studio/archive

  • JetBrainsRuntime:https://github.com/JetBrains/JetBrainsRuntime

【参考资料】

  • https://www.alainlam.cn/?p=859

  • https://stackoverflow.com/questions/71067886/does-an-android-studio-linux-arm64-version-exist/77020732#77020732