Android 10 根文件系统和编译系统(二十):Android.bp预编译
程序员文章站
2022-03-11 16:09:01
...
配套系列教学视频链接:
说明
系统:AOSP Android10.0
设备:Android x86模拟器
前言
本文重点描述Android.bp几种常见的预编译模块规则
常见的预编译的模块有:
var prebuiltTypes = map[string]string{
"SHARED_LIBRARIES": "cc_prebuilt_library_shared",
"STATIC_LIBRARIES": "cc_prebuilt_library_static",
"EXECUTABLES": "cc_prebuilt_binary",
"JAVA_LIBRARIES": "java_import",
"ETC": "prebuilt_etc",
}
一,预编译etc配置文件
模板: frameworks/base/data/etc/Android.bp
prebuilt_etc {
name: "Vendor_my_idc",
src: "Vendor_5135_Product_0005.idc",
filename_from_src: true,
sub_dir:"usr",
}
另外一种写法:
prebuilt_etc {
name: "Vendor_5135_Product_0005.idc",
src: "Vendor_5135_Product_0005.idc",
sub_dir:"usr",
}
最后路径是在out/target/product/产品名/system/etc/usr/
如果需要安装到其他路径,可以如下配置:
product_specific: true |
product/etc/subdir |
proprietary : true |
vendor/etc/subdir |
二, 预编译可执行程序
模板: system/core/logcat/Android.bp
cc_prebuilt_binary {
name: "logpersist.start",
srcs: ["logpersist"],
init_rc: ["logcatd.rc"],
required: ["logcatd"],
symlinks: [
"logpersist.stop",
"logpersist.cat",
],
strip: {
none: true,
},
}
其实编译的是一个脚本, 必须要求logcatd模块存在, 并且可以生成软连接。
三,预编译动态库
cc_prebuilt_library_shared {
name: "libmycjson-pre",
srcs: ["x86_64/libmycjson-pre.so"],
compile_multilib : “64”,
}
总结
其实Android.bp做预编译没有Android.mk那么灵活, 只限定于几个常见的目标路径, 无法用LOCAL_MODULE_PATH来指定路径。
上一篇: 3-5 网络文件系统
下一篇: Unity2D游戏层级渲染问题