环境搭建

https://blog.csdn.net/hool_wei/article/details/125628718

问题总结

全编问题总结

  • /bin/sh: 1: flex: not found
    sudo apt-get install flex

  • /u-boot/scripts/fit.sh: line 603: fdtget: command not found
    需要安装fdtget
    sudo apt-get install device-tree-compiler

  • scripts/extract-cert.c:21:10: fatal error: 'openssl/bio.h' file not found

    sudo apt install openssl
    sudo apt install libssl-dev
  • /usr/bin/env: ‘python’: No such file or directory
    sudo apt install python

  • prebuilts/clang/host/linux-x86/clang-3289846/bin/clang.real: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
    sudo apt install libncurses5

  • module adbd missing dependencies: libbrotli
    通过apt install brotli是不起作用的,github上下载编译安装还是报错。

注意这里是要去替换一下android源码里的/external/brotli这个库,而非虚拟机。

修改源码过程中问题总结

  • error: Missing nullability on method xxxxxx return [MissingNullability] lint检查 提示“MissingNullability”
    问题原因:Android 11 以后谷歌强制开启lint检查,lint检查不过编译会报错
    解决方案:加上@Nullable 注解 表明该方法可以返回空

  • 新增api编译报错
    https://blog.csdn.net/downloadname/article/details/125006111
    2. You can update current.txt and/or removed.txt by executing the following command:
    按照提示执行命令即可,如果m指令不行,就使用make指令。

修改

  • 开启root权限
    https://blog.csdn.net/weixin_43245753/article/details/125448467
    纠正一下文章中的几处描述不正确的地方:
    1)rk3588 andriod12的目录不一定是kernel-5.10,也有可能是kernel-5.11,具体可以看build.sh的脚本打印。
    2)base_system.mk位于build/make目录,而非build/core目录。

修改注意点:修改selinux.cpp时不要将StatusFromCmdline方法注释了,否则编译报错,说方法未引用。

模块化编译

frameworks模块化编译

https://blog.csdn.net/lvyaer_1122/article/details/130760135

1.frameworks/base/core/java下的java源文件修改
frameworks/base/core/java相关java文件修改,需要编译framework-minus-apex与framework-minus-apex-intdefs模块,而这两个模块属于frameworks/base/Android.bp中定义的,编译指令如下:

mmm  frameworks/base/:framework-minus-apex,framework-minus-apex-intdefs

输出路径为out/target/product/xx/system/framework/

如何定位子模块
找到修改的源文件的最近的Android.bp,检索引用源文件的module或者file_group,只有非default的module才要编译,否则要查找继续查找继承了非default的module;file_group则要找到最邻近的引用的只有非default的module。


0 条评论

发表回复

您的电子邮箱地址不会被公开。