如何在Android.bp文件中引入Jars和AARs?含AOSP预构建Jar导入需求
在AOSP中通过Android.bp导入预构建Jar包(如annotations.jar)的方法
两种常用实现方式
方式一:直接引用系统自带的预构建Jar
AOSP中自带的annotations.jar已经在系统预构建模块中定义完成,你可以直接在自己的模块里通过模块名引用,无需额外定义。
比如你的模块是java_library或android_app,修改Android.bp如下:
// 示例:Java库模块引用annotations java_library { name: "my_custom_lib", srcs: ["src/**/*.java"], // 动态引用(运行时依赖系统提供的annotations) libs: ["annotations"], // 如果需要静态打包(把annotations的字节码合并到自己的模块),改用static_libs // static_libs: ["annotations"], }
// 示例:Android应用模块引用annotations android_app { name: "my_app", srcs: ["src/**/*.java"], resource_dirs: ["res"], static_libs: ["annotations"], }
方式二:导入自定义预构建Jar(如自己存放的annotations.jar)
如果是你自行放置的预构建Jar,需要先定义prebuilt_java_library模块,再在业务模块中引用。
- 先在
Android.bp中定义预构建模块:
prebuilt_java_library { name: "my_local_annotations", // 替换成你的Jar文件实际路径 srcs: ["prebuilt/libs/annotations.jar"], // 设置可见性,允许其他模块引用 visibility: ["//visibility:public"], }
- 在业务模块中引用这个自定义预构建模块:
android_app { name: "my_app", srcs: ["src/**/*.java"], resource_dirs: ["res"], static_libs: ["my_local_annotations"], }
注意事项
- 确认系统模块名:可以在AOSP源码中搜索
prebuilt_java_library { name: "annotations" },找到系统预构建模块的定义,确保引用的模块名正确。 - 链接方式选择:
libs是动态依赖,运行时由系统提供Jar;static_libs是静态打包,会把Jar的字节码合并到你的模块中,根据需求选择。 - 可见性设置:自定义预构建模块必须设置
visibility,否则其他模块无法引用。
内容的提问来源于stack exchange,提问作者jinnings
相关产品推荐
相关产品推荐

