Android Studio 在 arm64 上的适配说明

问题说明

Google 官方给出的安装包,现在还没有提供 linux arm64 的版本(大概原因是受众小),网上也没有找到 arm64 下的安装包,或是明确的方法可以跑起来的。但是我们 FDE 环境下是希望能给开发者提供完整的开发套件,支持开发调试的。所以,需要进行 linux arm64 下的适配,下面记录了碰到的问题和解决方法。

适配过程

源码编译(失败)

Android Studio 是基于 IntelliJ IDEA 社区版修改过来,也是开源的,代码在 aosp 的源码中,下面是具体编译的方法:

mkdir studio-master-dev cd studio-master-dev repo init -u https://android.googlesource.com/platform/manifest -b studio-master-dev repo sync -c -j4 -q

谷歌源下载不到的话,也可以替换成清华源来下载代码:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b studio-master-dev

代码下载完成后,可以使用 IntelliJ IDEA Community Edition 来进行编译,使用 idea 打开 tools/idea 文件夹,然后进行构建。

编译过程开始就会出现错误,主要是源码中的 prebuilt 文件都是 x86 的,如果都自行编译 arm64 版本,工作量比较大,暂时放弃。

参考链接:

怎么编译一个Android Studio - CodingDev的博客

https://android.googlesource.com/platform/tools/base/+/mirror-goog-studio-master-dev/studio.md

替换二进制文件(成功)

因为 Android Studio 是基于 IntelliJ IDEA Community 的,而 idea 是提供了 linux arm64 的安装包的,并且能够正常安装启动,于是通过对比 idea arm64 和 android studio linux x86 的目录结构,发现基本相同,于是使用 idea arm64 中的二进制文件替换到了 android studio linux x86 的同名目录中,测试是可以成功启动 android studio 的界面的,下面是具体的步骤:

  • 目录结构对比,idea 的版本是 232.8660.185,android studio 的版本是 223.8836.35.223.10406996

image-20240220-012130.png
  • 替换文件或目录:

bin/libdbm.so jbr lib/jna/amd64/libjnidispatch.so

当前替换的二进制文件可能并不包含所有的二进制文件,后面使用过程中如果碰到了错误,再进行修复补充。

  • build-tools 替换

Android Studio 工具打开后,sdk manager 自动安装的 build-tools 还是 x86 的包,所以编译代码的时候是无法使用的,需要安装 arm64 版本的 build-tools,有两种方式安装:

推荐安装33.0.3 的版本,因为新版本和当前 gradle 版本是匹配的,Android Studio 向导生成的项目就能直接编译成功。29.0.3 的版本需要自己调整对应的gradle 版本(4.1.0),并修改向导生成的 gradle 语法,才能编译成功。

  • ndk 安装(暂时未解决,下面的方法不对,这个ndk 是安卓系统下用来编译的,linux 下无法使用)

同样的,sdk manager 自动安装的 ndk 也是 x86 下的包,所以也需要手动进行安装:

 以上步骤完成后,在编译示例项目过程中,最后还会碰到一个错误是关于 aapt2 的,因为 gradle 默认是会从 maven 源中下载 aapt2 的二进制文件来完成编译过程,并没有使用 build-tools 目录下的,这个暂时没有办法彻底解决,只能根据报错找到 gradle 下载的 aapt2 文件位置,使用 build-tools 下的 aapt2 替换就能成功,不过似乎每次编译 gradle 都会重新下载,导致需要反复替换才行。