Android底层
文章平均质量分 67
导数题
每天开心是最重要的事啦~~~
展开
-
android OTA执行update_engine_client命令报错ErrorCode::kDownloadInvalidMetadataSize (32)
目录android OTA执行update_engine_client命令报错ErrorCode::kDownloadInvalidMetadataSize (32)分析过程如下1. 换机器尝试,排除机器问题2. 多次打OTA包,并测试,初步排除OTA包问题3. 检查`ota.py`4. 尝试其他方式ota刷机5. 抓执行`update_engine_client`命令失败的logcat分析android OTA执行update_engine_client命令报错ErrorCode::kDownloadI原创 2021-08-10 11:36:24 · 5762 阅读 · 4 评论 -
Android soong架构中命名空间模块的概念
参考文章 https://source.android.google.cn/setup/build文章目录命名空间模块`判断依赖是哪里`的例子:`判断是否编译模块`的应用的例子命名空间模块在 Android 完全从 Make 转换为 Soong 之前,Make 产品配置必须指定 PRODUCT_SOONG_NAMESPACES 值。它的值应该是一个以空格分隔的列表,其中包含 Soong 导出到 Make 以使用 m 命令进行编译的命名空间。在 Android 完成到 Soong 的转换之后,启用命名空原创 2020-10-23 19:03:57 · 3716 阅读 · 0 评论 -
7.1 Android lunch时怎么走到target.mk的
文章目录主要线路build/make/core/product_config.mk 找target.mkinclude target.mk是这里找target.mk的逻辑在刚才那个地方的上面get-all-product-makefiles 宏函数AndroidProducts.mk.list主要线路In file included from build/make/core/config.mkIn file included from build/make/core/envsetup.mkIn fi原创 2020-09-23 17:48:24 · 1250 阅读 · 0 评论 -
九、子模块的执行
文章目录soong中`子模块执行`部分的代码log提示verboseLogerrorLogsoong中子模块执行部分的代码log提示/build/soong/ui/status/log.goverboseLogtype verboseLog struct { w io.WriteCloser}func (v *verboseLog) StartAction(action *Action, counts Counts) {}func (v *verboseLog) FinishActio原创 2020-09-10 14:43:36 · 1166 阅读 · 0 评论 -
八、module-info.json
文章目录module-info.json文件与envsetup.sh的关系allmod命令refreshmod命令pathmod命令gomod命令module-info.json文件的生成module-info.json文件与envsetup.sh的关系lunch之后,会增加一些与module-info.json相关的命令allmod命令lunch之后会增加一个allmod命令该命令执行后会显示所有的模块名(该命令需要在lunch之后执行)我们可以从envsetup.sh文件查看一下这个命令#原创 2020-09-10 14:43:05 · 1947 阅读 · 0 评论 -
七、AndroidProducts.mk
文章目录AndroidProducts.mk是什么简单来说就是:此外注意一下:例子AndroidProducts.mk怎么用AndroidProducts.mk如何被加载从`lunch`到`AndroidProducts.mk.list``AndroidProducts.mk.list`调用关系`_find-android-products-files`宏函数`get-all-product-makefiles`宏函数`get-product-makefiles`宏函数`_validate-common-l原创 2020-09-10 14:42:34 · 3561 阅读 · 0 评论 -
六、make目录中的main.mk
文章目录编译的逻辑顺序1. 执行`source envsetup.sh`脚本2. 执行`lunch`命令3. 执行`make`or`m`命令开始编译main.mk1. kati与main.mk2. Android.mk加载2.1 inc_and_print宏函数2.2 subdir_makefiles_total变量2.3 Android.mk.list2.4 build/soong/ui/build/finder.go编译的逻辑顺序1. 执行source envsetup.sh脚本执行source原创 2020-09-10 14:42:01 · 2063 阅读 · 0 评论 -
五、kati中调用main.mk
kati调用关系从/build/soong/ui/build/build.go文件中// Build the tree. The 'what' argument can be used to chose which components of// the build to run.func Build(ctx Context, config Config, what int) { ... if what&BuildKati != 0 { // Run ckati原创 2020-09-10 14:41:31 · 1287 阅读 · 0 评论 -
四、soong_ui的main.go
文章目录soong_ui参数必要的参数三个必要参数不能共存`--dumpvar-mode`参数`--dumpvars-mode`参数`--make-mode`参数其他参数showcommands参数--skip-make参数dist参数checkbuild参数命令传参进行宏定义(KeyValue组合)help和clean参数makefile中支持的参数 or makefile中的伪目标参数解析soong_ui中的`main`函数soong_ui参数必要的参数从代码看,Google是想整一个UI界面来着原创 2020-09-10 14:40:52 · 2171 阅读 · 0 评论 -
三、soong_ui.bash脚本
文章目录soong_ui.bash调用地方soong_ui.bash在envsetup.sh中的调用soong_ui.bash在main.mk中的调用soong_ui.bash在其他地方的调用soong_ui.bash分析soong_ui的调用顺序/build/soong/soong_ui.bash/build/soong/scripts/microfactory.bash/build/blueprint/microfactory/microfactory.bash展开`soong_build_go soo原创 2020-09-10 14:40:20 · 3029 阅读 · 1 评论 -
二、envsetup.sh脚本(Android10)
文章目录建议先阅读:新版本的envsetup.sh脚本1. add_lunch_combo函数被废弃2. print_lunch_menu函数2. get_build_var函数2. _lunch函数2. lunch函数3. addcompletions函数4. make函数5. m函数6. mm函数7. mmm函数8. gettop函数9. croot函数10. xgrep类函数11.hmm函数建议先阅读:envsetup.sh分析(旧版本Android)envsetup.sh分析二(旧版本Andr原创 2020-09-10 14:39:48 · 3503 阅读 · 0 评论 -
一、android build system编译系统概述
文章目录1. 基本概念2. Android build system的变迁2.1 Android N 前后build system的改变2.1.1 `Android N`之前2.1.2 `Android N`之后2.2 Android 10与Android 4.4 build目录对比2.3 Android10 manifest.xml中编译系统相关部分3. envsetup.sh分析4. kati、soong、blueprint、ninja4.1 ninja4.2 kati4.3 soong4.4 blue原创 2020-09-10 14:38:56 · 2311 阅读 · 0 评论 -
0. android build system编译系统有趣的几点心得
文章目录1. Android编译`m`or`make`命令1.1 Android老版本(7之前)1.2 Android新版本2. Android.mk2.1 Android.mk基本用法回顾2.1.1 LOCAL_PATH变量2.1.2 include $(CLEAR_VARS)2.1.3 `LOCAL_xxx`打头的变量2.1.4 include $(BUILD_xxx)2.2 Android.mk的`include`行为分析2.2.1 Android.mk中`include $(CLEAR_VARS)`原创 2020-09-10 14:38:06 · 1911 阅读 · 0 评论 -
android10 super.img编译
文章目录`make superiamge``INSTALLED_SUPERIMAGE_TARGET`牛逼哄哄的`droidcore`就依赖于它规则再来看看它的依赖`INSTALLED_SUPERIMAGE_DEPENDENCIES``make superimage-nodeps` or `make supernod`规则命令`intermediates-dir-for`宏函数misc_info.txt`build-superimage-target``dump-super-image``dump-dynam原创 2020-06-01 17:32:00 · 9908 阅读 · 0 评论 -
高通kernel顶层目录下的AndroidKernel.mk文件
高通kernel顶层目录下的AndroidKernel.mk文件高通kernel顶层目录下的AndroidKernel.mk文件是Android的编译系统的一部分,用来编译kernel。它的位置是在aosp/kernel目录下。原创 2017-05-23 21:28:40 · 6095 阅读 · 2 评论 -
boot-factory模式
misc分区中有Bootloader Control Block(BCB),主要是用于存放Recovery引导信息。boot-factory模式进入boot-factory模式adb reboot bootloaderfastboot flash misc misc.imagefastboot reboot退出 boot-factory模式adb reboot bootloaderfastbo原创 2017-04-26 19:16:19 · 929 阅读 · 0 评论 -
使用dtc将dtb转换成dts
格式cd kernel目录/scripts/dtc/dtc -I dtb -O dts -o xxxxxxx.dts /arch/arm64/boot/dts/qcom/xxxx.dtb在android源码目录下进行转换/out/target/product/xxxxxxx/obj/KERNEL_OBJ/scripts/dtc/dtc -I dtb -O dts -o xxxxxxx.dts /o原创 2017-04-26 19:29:58 · 15205 阅读 · 1 评论 -
在Android中单独编译linux kernel驱动模块
在Android中单独编译linux kernel驱动模块本文参考了:http://blog.csdn.net/qq1084283172/article/details/56958136Makefileobj-m += mytp.oKERNELDIR ?= <aosp_path>/out/target/product/<product_name>/obj/KERNEL_OBJ/PWD ?= $(s原创 2017-06-02 18:06:13 · 10916 阅读 · 2 评论 -
编译Powertop for Android
原文:Link:https://01.org/zh/powertop/blogs/ayates1/2015/how-build-powertop-android?langredirect=1翻译:你可以在PowerTOP 源码代码附带的README文件中找到这些说明。1. 获取pciutils和ncurses库。如果它们已经在工作目录中,请跳过此步骤。 pciutils...翻译 2018-07-24 17:53:29 · 969 阅读 · 0 评论 -
android系统中将linux驱动模块在外部进行动态编译
android系统中将linux驱动模块在外部进行动态编译目录前言Makefile编写,及注意事项解决签名问题0. 前言平常我们编译一个驱动模块,需要编一个boot.img,这就需要3、4分钟时间。之后还要在用fastboot刷写进手机,这里又多了一个重启的时间。这样子调试内核驱动模块起来就很费时间。最要命的是影响节奏,会打断你的编程思路。是不是感觉烦烦烦!那么这篇...原创 2018-08-30 21:34:47 · 1179 阅读 · 1 评论 -
使用adb or fastboot命令进入高通的9008(edl)模式
如题,两种方法 1. adb ··· $ adb reboot edl ··· 2. fastboot$ fastboot oem edlor$ fastboot reboot emergency转载 2018-09-12 11:32:24 · 118285 阅读 · 6 评论 -
Android Kernel如何确定使用哪个defconfig文件
Android Kernel如何确定使用哪个defconfig文件?答案:device目录下的项目文件夹下的AndroidBoard.mk决定了使用哪个def_config文件1. 项目控制的AndroidBoard.mk以device/qcom/sm6150/AndroidBoard.mk为例子因为KERNEL_DEFCONFIG被定义为sdmsteppe-perf_defconf...原创 2019-10-01 13:58:02 · 5451 阅读 · 0 评论 -
关于Android Q平台上qssi的介绍
1. QSSI 是 Qualcomm Single System Image 的缩写。2. Android Q上开始支持QSSI。3. QSSI 将会在所有(qssi支持的)高通芯片组上,构建一个单独或共享的system.img3.1 QSSI编译注意事项 lunch qssi ------ 编译system.img lunch target ------ 编...原创 2019-10-01 14:07:16 · 19977 阅读 · 1 评论 -
build/envsetup.sh分析
通常我们是编译Android源码前要先执行$ source build/envsetup.sh该脚本执行后,我们就可以执行lunch等命令。怎么会这么神奇,执行了shell脚本就可以多出来几个命令了?下面我们一起分析一下,它是如何实现的。原创 2017-05-17 17:59:14 · 2693 阅读 · 0 评论