当前位置:   article > 正文

Android 10 根文件系统和编译系统(二十):Android.bp预编译_prebuilt_etc

prebuilt_etc

   配套系列教学视频链接:

      安卓系列教程之ROM系统开发-百问100ask


说明

系统:AOSP Android10.0

设备:Android x86模拟器

前言

    本文重点描述Android.bp几种常见的预编译模块规则


常见的预编译的模块有:

  1. var prebuiltTypes = map[string]string{
  2. "SHARED_LIBRARIES": "cc_prebuilt_library_shared",
  3. "STATIC_LIBRARIES": "cc_prebuilt_library_static",
  4. "EXECUTABLES": "cc_prebuilt_binary",
  5. "JAVA_LIBRARIES": "java_import",
  6. "ETC": "prebuilt_etc",
  7. }

一,预编译etc配置文件

模板: frameworks/base/data/etc/Android.bp

  1. prebuilt_etc {
  2. name: "Vendor_my_idc",
  3. src: "Vendor_5135_Product_0005.idc",
  4. filename_from_src: true,
  5. sub_dir:"usr",
  6. }

另外一种写法: 

  1. prebuilt_etc {
  2. name: "Vendor_5135_Product_0005.idc",
  3. src: "Vendor_5135_Product_0005.idc",
  4. sub_dir:"usr",
  5. }

最后路径是在out/target/product/产品名/system/etc/usr/

如果需要安装到其他路径,可以如下配置:

product_specific: true

product/etc/subdir

proprietary : true

vendor/etc/subdir

二, 预编译可执行程序

模板: system/core/logcat/Android.bp

  1. cc_prebuilt_binary {
  2. name: "logpersist.start",
  3. srcs: ["logpersist"],
  4. init_rc: ["logcatd.rc"],
  5. required: ["logcatd"],
  6. symlinks: [
  7. "logpersist.stop",
  8. "logpersist.cat",
  9. ],
  10. strip: {
  11. none: true,
  12. },
  13. }

其实编译的是一个脚本, 必须要求logcatd模块存在, 并且可以生成软连接。

三,预编译动态库

  1. cc_prebuilt_library_shared {
  2. name: "libmycjson-pre",
  3. srcs: ["x86_64/libmycjson-pre.so"],
  4. compile_multilib : “64”,
  5. }

总结

其实Android.bp做预编译没有Android.mk那么灵活, 只限定于几个常见的目标路径, 无法用LOCAL_MODULE_PATH来指定路径。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/526308
推荐阅读
相关标签
  

闽ICP备14008679号