-
静态库生成路径:out/target/product/XXX/obj/STATIC_LIBRARIES/
-
静态库生成路径:out/target/product/XXX/obj/SHARED_LIBRARIES/ 里面的so文件最终会拷贝到/system/lib 下面。
-
/system/bin目录下预置可执行文件:项目需求要在该目录下预置一个可执行文件test;我的方法是在脚本中将其拷贝到/system/bin目录,但是编译生成的out目录下,该文件的权限是644,最开始我以为还需要在脚本中另行修改权限。后来烧机后发现该文件的权限是755了。经过查资料得知 源码下system/core/libcutiles/fs_config.c中会配置一些文件的默认权限,其中有这样一句:{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/*" }, 会把/system/bin 目录下的文件的权限修改为755.
-
如何在mk文件中调用shell脚本:$(info $(shell ($(LOCAL_PATH)/test.sh))) 文件在当前目录, $(info $(shell (echo_test.sh)))文件在根目录下
-
apk源码默认不会编译进去系统问题:android源码中apk源码默认是不会被编译进系统的,在build/make/target/product/core.mk中申明过的才会编译进去。否则得在其他地方申明去引用该apk的mk文件,如果不想这么麻烦,可以在apk源码中的mk文件中添加ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_PACKAGE_NAME) ,这样就会默认把apk编译进系统了。
-
修改init.rc (system/core/rootdir/init.rc)后,不能直接push进去,要make bootimage 然后重新刷boot.img。 mtk平台下的/vendor/下的init.***.rc也是如此。
-
mm命令介绍:mmm packages/providers/MediaProvider: 编译指定目录下的模块,但不编译它所依赖的其它模块;
mm: 编译当前目录下的模块,它和mmm一样,不编译依赖模块; 这种编译方式一般需要cd 进入packages/providers/MediaProvider目录,然后执行mm指令;
mma: 编译当前目录下的模块及其依赖项 。 -
编译时去掉ODEX优化,不生成odex文件,在命令中加上
WITH_DEXPREOPT=false -
代码中引用R.raw.XX 提示资源找不到,使用com.package.XXX.R.raw.XX 即可。 即代码中要指定包名。
Android源码编译部分注意事项总结
最新推荐文章于 2021-05-20 11:02:03 发布