向AIDE(安卓设备上的Android Studio)导入aar库

AIDE是一款安卓版的Android Studio,可以直接在安卓设备上编写安卓程序,无需使用Windows或Mac或Ubuntu电脑。这里推荐这一款AIDEPro,地址:AIDEPro。这款AIDE不仅支持普通安卓程序开发,还可以导入额外的JAR,支持Maven,Aapt,Gradle等。

在编写一个安卓程序时,我们很多时候,需要导入一些AAR库,来让安卓程序支持某些厂商的设备特定的API,且界面符合要求。例如,OPPO手表程序开发社区规定:开发的安卓手表程序,如要上传至OPPO手表应用商店,必须在开发时使用OPPO给定的AAR库。这些库里有OPPO手表的标准UI控件,且有一些OPPO手表的Color OS专属的API。否则,可能无法在OPPO手表上正常运行,或运行效果不符合OPPO手表的常规人机交互方式,从而导致该应用在OPPO应用商店无法通过审核。

AIDE显然不是官方的Android Studio,所以不能用Android Studio的方式导入AAR文件。但也并非无法导入。在百度贴吧里有人提了如何导入,但说明不够清晰,不太易懂。见aide导入aar库教程

本文详细说明一下如何向安卓手机/平板上的AIDE导入AAR库。

AIDE导入AAR库是通过Maven。AIDE可以设置本地Maven库,指定一个文件夹的路径即可。步骤是:

  1. 先点右上角的三个点,选择More...,Settings。
  2. 在Settings里的Build & Run里,选择Local Maven repositories,里面设置本地的Maven目录。AAR文件就会从这里面找。

    那么,这个目录应该怎么输入呢?
    这里以一个OPPO手表的Heytap控件的AAR文件为例:
    我们将这个AAR文件放在华为手机的这个文件夹里:

    在此华为手机上,这个文件的目录位置是My phone/Compatible data/AideProjects/Libraries/OPPO/Heytap/7.0.18。注意它的文件名也是Heytap-7.0.18.aar,和目录的最后两节一致。这是规定,后面会再次提到。
    但是要注意:这个目录在AIDE安卓程序上是不可能读出来的。因为当今的国行华为手机使用的系统是Harmony OS Next,并不是一个基于安卓的系统,而是华为自己开发的鸿蒙系统。安卓程序的运行是在一个容器里以兼容的方式运行的。那么,AIDE这个安卓程序是如何读取目录的呢?
    我们可以在AIDE的文件管理器里找到这个文件,然后长按这个文件,点击Copy Path。

    然后随便找个可以输入文本的地方,你会注意到弹出键盘的地方会显示你刚才复制的路径。

    和前面的华为手机里的文件目录做个对比,会发现,/storage/emulated/0/的前缀用于代替/My phone/Compatible data/,之后都一致。也就是说,鸿蒙系统的华为手机把安卓容器里的东西放在了/My phone/Compatible data/里。显然,对于AIDE来说,能够读取的目录是以/storage/emulated/0/为前缀的安卓目录。
    所以,在这里,我们就是把AAR文件放在/storage/emulated/0/AideProjects/Libraries/里。因此Local Maven repositories里应该写:

    除此之外,建议启用Aapt2。在Advanced Settings,Experimental functions里。

    除了要在全局设置里导入AAR以外,还要在具体的项目里导入这个AAR库。
    新建一个AndroidX项目。然后在项目里的app里的build.gradle里(注意,是项目的app目录下,不是项目根目录下哦!),在dependencies里加一句implementation 'OPPO:Heytap:7.0.18'

    在这里说明一下:OPPO:Heytap:7.0.18表明从Local Maven repositories(即/storage/emulated/0/AideProjects/Libraries/)里进入OPPO/Heytap/7.0.18。与此同时,目录的最后两节(即Heytap和7.0.18)也代表了包名和版本。所以,文件的命名也必须为HeyTap-7.0.18.aar(即目录的最后两节,中间用-连接) ,否则系统无法读取。
    此时刷新Maven,等待片刻,系统compile基本成功,但有个错误:

    这里就把minSdkVersion改成24。不科学,但算个临时解决方案。
相关推荐
阿维的博客日记1 小时前
Windows自由切换jdk版本
java·windows
江屿风1 小时前
C++图论基础单源最短路-常规版dijkstra算法/堆优化版dijkstra算法/bellman-ford 算法/spfa 算法流食般投喂
开发语言·c++·笔记·算法·图论
摇滚侠1 小时前
MyBatis 入门到项目实战 MyBatis 逆向工程 62
java·开发语言·mybatis
恋猫de小郭1 小时前
解析华为 DevEco Code 和小米 MiMo Code,都基于 OpenCode ,有什么区别?
android·前端·ios
ch.ju1 小时前
Java Programming Chapter 4——Multi-level inheritance
java·开发语言
Molesidy1 小时前
【Linux】【C++】Linux下的C++编程以及基于GDB的VSCode的C++调试
开发语言·c++
techdashen1 小时前
用 Rust 真正发出 Ping:FFI 类型、newtype 与 MaybeUninit
开发语言·后端·rust
yuezhilangniao1 小时前
2026删除K8s命名空间 卡 Terminating 的 ns
java·容器·kubernetes
塵觴葉1 小时前
基于Lua协程的简单任务管理
开发语言·lua