/
Android Studio 在 arm64 上的适配说明

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 版本,工作量比较大,暂时放弃。

参考链接:

http://chengfangpeng.tech/post/2020-08-03-build-android-studio/

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 都会重新下载,导致需要反复替换才行。

 

Add label

Related content

e. Android Studio 在 arm64 上的适配说明
e. Android Studio 在 arm64 上的适配说明
More like this
Android APK编译
Android APK编译
More like this
3.2.4 动态链接器融合
3.2.4 动态链接器融合
More like this
动态链接器融合
动态链接器融合
More like this
4.2.4 使用FDE仓库编译waydroid
4.2.4 使用FDE仓库编译waydroid
More like this
4.1.3 termux-x11编译与运行
4.1.3 termux-x11编译与运行
More like this