Android Automotive OS相关库的编译

android.car 是 Android Automotive OS 重要的模块,在此称之为 Car Lib,相关的 Car API 调用都需要依赖 Car Lib。基于 Android 源码进行开发的时候,相关模块可以通过 Android.mk 或 Android.bp 导入 Car Lib 的依赖。如下:

[Android.mk]
         LOCAL_JAVA_LIBRARIES += android.car

[Android.bp]
        android_app {
        ...
                libs:  ["android.car"],
        ...        
        }

除此之外,在进行应用开发的时候,可能希望将 Car Lib 导入 Android Studio 工程,或者有的时候第三方负责部分模块开发的时候无法基于完整的源码进行开放,这种情况下需要将 Car Lib 单独导出。

尤其是 Android 9 或 10 Revision 5 之前版本的项目,谷歌官方SDK中尚未包含 Car Lib,因此需要以额外依赖包的形式导入到工程中,以获得使用Car API 的相关依赖。

与其他 Android API 一样,Car API 对不同方法设置了不同的访问等级,并不是所有的API 都是公开的,部分隐藏的API 不建议第三方应用进行调用。在单独编译 Car Lib 的时候,允许根据方法可见性导出不同的包。在 Car Lib 的构建文件(Android.mk 或 Android.bp)中,定义了以下三个模块:

android.car  //包含所有 Car Lib中定义的方法
android.car-system-stubs  //包含除了不应被其他模块使用的系统方法外所有方法
android.car-stubs  //仅包含公开的 Car API(较高稳定性的)

通过 make 加上模块名的方式,可以单独编译特定模块:

make android.car android.car-system-stubs android.car-stubs

编译后的结果以 JAR 包的形式存放在 out/soong/.intermediates 路径中,并以对应的工程路径命名的子目录下(如 out/soong/.intermediates/packages/services/Car/car-lib/android.car/android_common/javac/android.car.jar)。

如何将 jar 包导入 Android Studio略过...

除了Car Lib 以外,Android Automotive OS中还包含其他专为车载开发的库可供使用,可以像编译 Car Lib一样在找到模块名后对这些库进行单独编译。对于编译类型为 Android 库(Android Archive,即AAR文件) 的模块来说,成功编译后,可以在 android_common 目录下找到对应的 AAR 包。
Automotive 相关模块列表:

模块 概述
car-assist-client-lib 短信朗读功能客户端 API
car-assist-lib 短信朗读功能服务端 API
car-broadcastradio-support 广播开发支持库
car-media-common 媒体中心开发支持库
car-messenger-common 消息应用开发支持库
car-settings-lib 系统设置开发支持库
car-telephony-common 电话应用开发支持库
car-ui-lib UI 控件支持库
android.car.userlib 多用户支持库
com.android.car.obd2 OBD 诊断开发支持库
car-setup-wizard-lib 谷歌开机向导开发支持库

上述表格中这些开发库各有其用途,与 Car Lib不同的是这些库主要面向的是系统模块和部分系统应用的开发者,第三方应用开发者一般不需要使用这些库。

基于 Android Automotive OS 进行开发,以上这些库还是值得关注的,许多功能已经可以在这些库中找到现成的实现。

你可能感兴趣的:(Android Automotive OS相关库的编译)