
android
文章平均质量分 66
丁香树下丁香花开
丁香树下,丁香花开!
展开
-
android build 编译打印详细过程
我们在make otapackage编译android代码的时候,有时候需要跟踪详细的过程,包括所有的过程,可以修改build/core/Makefile,赋值hide := 为空即可原创 2017-04-26 17:53:00 · 3027 阅读 · 0 评论 -
android.mk转换为android.bp
android.mk大家都很熟悉了,就是android下编译模块的配置文件,可以理解为android makefile。从android N之后,我们发现好多模块下面没有了android.mk文件,多了一个android.bp文件。这个是google在android N之后新的编译配置文件。在实际项目中,我们需要把android.mk转换为android.bp,还好sdk中给我提供了android...原创 2018-05-09 20:00:29 · 13869 阅读 · 3 评论 -
recovery 恢复出厂设置失败Data wipe failed
最近客户反馈,编译32位的android系统,在recovery中执行恢复出厂设置的时候失败了,失败的打印提升信息如下。Formatting /data...[ 2.191404] E:get_file_size: invalid size -1289764864 for /dev/block/data[ 2.207430] Data wipe failed.根据打印提示,意识是说...原创 2018-05-10 20:04:43 · 2891 阅读 · 0 评论 -
recovery 强制执行恢复出厂设置(Rescue Party)
有时候我们在系统正常运行的时候,突然跑到recovery里面了,并且停在了如下界面:Can't load Android system. Your data may be corrupt.If you continue to get this message, you may need toperform a factory data reset and erase all user datast...原创 2018-06-15 19:55:01 · 16344 阅读 · 1 评论 -
recovery 升级前兼容性检查(Vendor Interface Object)
从android P(9.0)版本开始,我们发现编译出来的OTA升级了里面多了一个文件,compatibility.zip,这个里面存储这system与vendor分区的一些特性,用来做升级前的兼容性检查。其实从android O开始已经增加了这个功能,但是没有默认打开。直到android P上,已经默认打开了。解压compatibility.zip后,内容如下:我们先从goo...原创 2018-08-15 15:49:21 · 5750 阅读 · 3 评论 -
recovery 根据@/cache/recovery/block.map描述从data分区升级
随着android版本的更新,系统固件的大小也越来越大,升级包也越来越大,cache分区已经不够存储update.zip了,所以应用把update.zip下载到data分区,默认情况下data分区是可以存储升级包的。 我们有分区加密的功能,当打开加密分区后,data分区是加密的,当升级包存在data分区的时候,recovery下获取不到对应的秘钥,也没有对应的程序去解密,所以re...原创 2018-08-23 20:16:30 · 4538 阅读 · 0 评论 -
recovery uncrypt功能解析(bootable/recovery/uncrypt/uncrypt.cpp)
我们通常对一个文件可以直接读写操作,或者普通的分区(没有文件系统)也是一样,直接对/dev/block/boot直接读写,就可以获取里面的数据内容了。当我们在ota升级的时候,把升级包下载到cache/data分区,然后进入recovery系统后,把cache/data分区mount之后,即可从对应的分区获取zip升级包升级了, 前提是我们需要挂载对应的分区cache或者data,这样才能给读...原创 2018-08-23 20:13:12 · 5194 阅读 · 0 评论 -
查看服务器编译android/linux后台线程个数
由于日常开发中,我们都是公用的服务器编译,这样有时服务器会变的异常缓慢,我们就需要查看下,是谁使用了大量的多线程编译: 对于编译android系统,使用的是make otapackage -j*编译:我们可以使用如下命令查看 ps -ax | grep "j" | grep "otapackage"即可查看到其他人使用的线程个数。...原创 2018-09-28 11:22:57 · 834 阅读 · 3 评论 -
一个exfat U盘引起的systen crash
最近遇到一个奇葩的问题,客户反馈,在Android 系统的TV上,插入exfat格式的U盘,然后就system crash了,经过一系列分析后,我们找到了原因,把分析过程分享下,希望对有类似的问题的朋友参考: 由于kernel打印的信息比较多,我们截取比较重要的信息分析:这里out_of_memory了, 内存耗尽了,我们继续看看下面的打印,看看是哪个进程导致的内存消耗...原创 2018-12-06 19:59:18 · 1268 阅读 · 0 评论 -
recovery 下界面UI旋转90 180 270修改
原文修改出自简书:https://www.jianshu.com/p/768fdd954061应该是MTK修改的google源码,支持recovery下屏幕旋转90/180/270, 作者把MTK的修改上传了,验证没有问,可以直接使用,多谢分享...原创 2019-01-30 17:29:22 · 1462 阅读 · 1 评论 -
FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)
一. 用winhex工具分析SD卡(FAT32)WinHex.exe -> 工具 ->打开磁盘 ->选中SD卡设备 图(1)打开后主界面如下: ...原创 2019-03-01 20:11:42 · 14837 阅读 · 3 评论 -
Android Boot Image Header结构
Android 9.0之前的boot header:struct boot_img_hdr{ uint8_t magic[BOOT_MAGIC_SIZE]; uint32_t kernel_size; /* size in bytes */ uint32_t kernel_addr; /* physical load addr */ uint32_t ...原创 2019-03-15 16:57:10 · 1354 阅读 · 0 评论 -
Can't find ext4 filesystem(EXT4-fs:Bad magic number in super-block)
针对目前市面上主流的android系统的嵌入式设备,都是使用的emmc的flash存储,相应的使用的是ext4的文件系统,当ext4的system分区无法挂载的时候,我们改如何分析呢?何种操作导致的ext4分区无法挂载呢? 我们出问题的设备的启动log如下:[ 1.868201@2] fs_mgr: Warning: unknown flag format[ ...原创 2019-03-11 17:43:13 · 6893 阅读 · 1 评论 -
安卓系统源码编译——so库的源码路径列表
前人栽树,后人乘凉转载于:http://blog.youkuaiyun.com/zhaoxy_thu/article/details/16871483本人在尝试对安卓系统的部分代码进行编译时,经常发现需要查找某个so库的源码进行修改,但是苦于安卓so库的命名方式各异,且在源码中的位置各不相同,查找起来很费时间。于是把其中的一些so库所对应的源码路径记录了下来,在这里分享给大家。libandroid.so——f...转载 2018-04-16 20:05:19 · 1392 阅读 · 1 评论 -
button按键测试
#include <stdio.h>#include <unistd.h>#include <linux/input.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include原创 2018-03-30 19:54:15 · 1758 阅读 · 0 评论 -
Makefile中通过sed命令生成文件系统的selinux的配置文件vendor_filesystem_config.txt
今天在编译android-O(8.0)的时候,我自己新增加了一个ext4格式的分区,在编译这个分区的时候,需要对应的生成文件系统的配置文件xxxx_filesystem_config.txt,发现了生成这个配置文件的的Makefile里面,调用了sed命令来处理一些字符串:build/core/Makefiledefine fs_config(cd $(1); find . -type原创 2017-07-15 16:00:02 · 1625 阅读 · 0 评论 -
Makefile编译时怎么打印出变量值
1、输出打印信息的方法是:$(warning xxxxx)2、输出打印变量值的方法是:$(warning $(XXX))转载 2017-09-25 19:43:08 · 1368 阅读 · 0 评论 -
adb和adbd分析
原文出处:http://blog.youkuaiyun.com/viewsky11/article/details/53889143作者:viewsky11转载:关于adb的原理,流程,代码,编译分析的透彻在adb中有三个模块,分别是adbd,adb server,adb client,如下表所示:module nameprocess namer转载 2017-12-21 14:18:47 · 12036 阅读 · 1 评论 -
android默认开启adb调试方法分析
用adb调试android时,每次接入usb线,都会提示一个确认打开usb调试功能的窗口,有时候,我们需要默认打开usb调试功能。或者无需弹出对话框,直接默认开启。这个我们需要分析adb的流程了。adb认证流程如下图:认证流程:1. 我们如果在PC端使用过adb命令,则会在当前用户目录生成一对密钥,密钥存放在.android目录,其中adbkey为私钥,adbk原创 2017-12-21 15:11:59 · 20649 阅读 · 2 评论 -
android adb 流程原理代码分析(一)
由于要用到adb的知识,但是对adb啥也不了解,看了下android的代码,adb的源码在system/core/adb下面,然后网上搜下了资料,发现很多大神的源码分析,瞬间信心爆棚,把大神写的博客都浏览了一遍,然后手动运行了下adb命令,顺便跟踪了下过程,发现原来还是很好的理解,源码的各种线程创建,函数回调,对于我这种基础不咋好的,,还是看的晕晕呼呼,现在把我自己的理解给大家分享,有理解错误的还原创 2018-02-01 20:48:48 · 8659 阅读 · 10 评论 -
关于配置android configfs gadgets的补充说明
了解了怎样配置android configfs gadgets,是不是我们就可以直接照搬到我们的平台就直接可以用了呢,显然是可以的,但是有些需要注意的地方,不然还是有问题的,这个在原文中,也提醒说明了哪些注意的地方,但是我们还是单独拿出来说明下:stop adbdsymlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadg...原创 2018-03-22 16:28:14 · 2913 阅读 · 0 评论 -
system.img镜像转换为system.new.dat + system.transfer.list
android 8.1上面验证,支持所有的android版本,直接放到sdk中执行即可。img2sdat.py#!/usr/bin/env python#coding=utf-8import sysif sys.hexversion < 0x02070000: print >> sys.stderr, "Python 2.7 or newer is required." sy...原创 2018-03-22 16:39:11 · 2720 阅读 · 0 评论 -
system.transfer.list版本进化
从android5.0开始之后,recovery升级包中不再升级system.img,而是升级system.new.dat+system.transfer.list的这种文件组合,经过android版本的不断进化,transfer的版本也在不断的升级,目前已经发展到了版本4,从android-L android-M android-N android-O的过程,transfer进过过程如下...原创 2018-03-19 17:26:31 · 1131 阅读 · 0 评论 -
system.transfer.list深度解析
system.transfer.list system.new.dat很明显,通过名字我们就知道这两个文件的作用,system.new.dat为数据部分,system.transfer.list为转换的描述列表,我们可以通过这两个文件完成升级。我们打开一个升级包的升级脚本META-INF\com\google\android\updater-scriptblock_image_update("/...原创 2018-03-19 17:24:43 · 3296 阅读 · 0 评论 -
factoryreset恢复出厂设置测试
#/bin/shrm -rf /cache/recovery/commandecho "--wipe_data" > /cache/recovery/commandecho "--wipe_cache" >> /cache/recovery/commandsyncsyncsleep 1syncsyncreboot recoveryandroid系统进入reco...原创 2018-03-30 19:36:45 · 6081 阅读 · 0 评论 -
wifi测试
不通过android UI操作,直接命令打开wifi,测试wifi功能,适用于amlogic平台的android O之后的版本。1. hardware/amlogic/wifi/multi_wifi/config/wpa_supplicant.conf 加入:ctrl_interface=/data/misc/wifi/wpa_supplicant2.shell脚本:#/bin/shsvc w...原创 2018-03-30 19:47:22 · 3685 阅读 · 0 评论 -
android recovery设置selinux为permissive
我们在调试开发阶段,经常需要把selinux关闭,则我们修通过设置uboot env来设置为允许状态:setenvEnableSelinux permissive;save 我们如果需要一直设置为permissive模式,不需要通过uboot env去控制,可以这样修改(android 9.0上面验证):system/core/init下面打patch:diff --...原创 2019-03-13 11:06:36 · 3281 阅读 · 2 评论