向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。不科学,但算个临时解决方案。
相关推荐
geovindu3 分钟前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
wuyk55510 分钟前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
梦梦代码精1 小时前
电商系统不是技术堆叠:LikeShop如何用分层Hold住复杂业务?
java·docker·代码规范
凯瑟琳.奥古斯特1 小时前
K次取反最大化数组和解法(力扣1005)
开发语言·c++·算法·leetcode·职场和发展
负责的蛋挞1 小时前
异步HttpModule的实现方式
java·服务器·前端
AC赳赳老秦1 小时前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw
☆cwlulu1 小时前
调试排查工具介绍(gdb、strace、Valgrind等)
开发语言·c++·嵌入式硬件·ubuntu
Tian_Hang1 小时前
Eclipse Ditto 物模型相关代码
java·运维·服务器·ide·eureka·eclipse
随遇丿而安1 小时前
第11周:Activity 跳转与传值 + 跳转优化
android
C语言小火车2 小时前
C++ 快速排序(Quick Sort)深度精讲:分治思想、Lomuto 分区法及三数取中优化,面试手撕必会
c语言·开发语言·c++·面试·排序算法·快速排序