You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AOSP中添加aar库并在自研ROM的系统服务内使用?

定制ROM系统服务引入AAR库的实现方案

方案1:解压AAR单独集成内部资源

  • 将目标AAR文件后缀修改为.zip后解压,提取内部的classes.jar、res资源目录、jni目录下的.so文件(如有)
  • 把classes.jar重命名为自定义名称(如custom_sdk.jar)放到系统服务模块的libs目录下
  • AAR内的res资源直接合并到系统服务的res目录,建议提前给所有AAR资源添加统一前缀,避免和系统资源ID冲突
  • 若使用Android.bp构建,在系统服务模块配置的static_libs字段中添加对应jar包名称,有.so依赖的话额外添加到jni_libs字段即可
  • 若使用旧版Android.mk构建,添加LOCAL_STATIC_JAVA_LIBRARIES += custom_sdk.jar、LOCAL_JNI_SHARED_LIBRARIES += 对应so库名即可

方案2:通过AOSP构建规则直接导入AAR

不需要手动解压AAR,直接用构建系统的原生规则导入:

  1. 将AAR文件放到系统服务模块的子目录下,比如命名为my_dependency.aar
  2. 编写AAR导入的构建配置:
    • Android.bp写法:
    aar_import {
        name: "imported_my_dependency",
        aars: ["my_dependency.aar"],
        sdk_version: "current",
        static_libs: [
            // 若AAR有额外依赖,在此处声明
        ],
    }
    
    • Android.mk写法:
    include $(CLEAR_VARS)
    LOCAL_MODULE := imported_my_dependency
    LOCAL_AAR_FILE := my_dependency.aar
    LOCAL_MODULE_TAGS := optional
    include $(BUILD_STATIC_JAVA_AAR_LIBRARY)
    
  3. 在系统服务的构建配置中,将imported_my_dependency添加到静态依赖列表即可:
    • Android.bp加到static_libs数组
    • Android.mk添加LOCAL_STATIC_JAVA_AAR_LIBRARIES += imported_my_dependency

注意事项

  • 大部分系统服务运行在system_server进程,若AAR有上下文相关调用,注意适配系统服务的Context,不要引用应用端私有API
  • 如果AAR声明了自定义权限,需要提前将权限定义写入frameworks/base/core/res/AndroidManifest.xml,避免运行时权限找不到的错误
  • 调整依赖后首次编译建议先执行make clean清除缓存,避免旧构建产物导致的编译异常

内容的提问来源于stack exchange,提问作者Markus Haas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:54:04