自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李标标的博客

一些工作心得分享

  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 recovery升级界面文字修改方法

升级界面上默认的文字为install system update ,那么可以改吗,那当然可以首先这部分文字的来源recovery/res-xhdpi/images/install_text.png,里面是所有翻译的列表,recovery会对图片进行解析 ,根据传入的locale 使用对应的语言翻译修改方法:bootable/recovery/tools/recovery_l10n使用该工具 可以修改字符串后重新生成图片Main.java中说明的很详细,我也是按着做就完事儿了...

2020-05-09 10:41:07 1281

原创 七、recovery ota升级包签名生成/校验

最近一直有两个疑问 升级包签名的规则和签名文件具体的位置,所以大概看了下签名流程并整理出来大概理解了下 1.如何签名 2.如何校验一.相关整理首先要大概知道的两个内容1.CMS数字签名参考:https://www.ibm.com/developerworks/cn/java/j-lo-cms-ticketbasesso/大概理解为签名阶段:取数据的hash 使用私...

2020-04-13 18:14:24 7212

原创 关于Android9.0 断电后升级问题排查分析

最近遇到一个项目Android 9.0的,很多机器出现了开机dm-verify error的错误,排查了很久,做了大量的测试,在此坐下记录分析流程1.问题复现2.问题排查3.问题解决一.问题复现起初的信息并不全,升级的log也是全部跑完了,正好过年期间看了下updaer断电后升级的机制,年后重新看这个问题,发现升级的log其实都是retry的,也就是升级中间关机过测试...

2020-03-19 16:43:54 1305

原创 MTK 驱动部分双分区升级原理

在8.0之后MTK平台将tee lk preloder 等分区设置为双分区,升级的时候会将两个分区都进行升级,我们对这一部分做一个简单的分析和了解一、升级包语句ota_from_target_filesdef WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_file): target_info =...

2020-03-18 14:09:58 1709

原创 六、Android recovery升级断电保护机制

本篇将具体分析执行写入的流程,,整理完该流程后,将通过升级的log具体分析断电后重新升级的情况一.如何断电后重启继续进入升级几句话总结1.调用framwork接口时会将command写入misc分区2.升级过程中加入retry标志位,如果第二次升级,会将retry++3.misc分区的标志位只有在finlsh_recovery方法中,即使升级过程中掉电,重新上电后,mis...

2020-03-11 11:47:14 4317 2

原创 针对amlogicAB升级-编译流程优化

一、问题描述最近处理了一个amlogic 7.1 AB项目,升级出现system不匹配的问题,对比发现刷机包中的system与obj包中的不一致,那么就要从编译流程方面排查,将刷机和做包使用的固件进行同步二、解决思路说实话一开始其实没什么思路,从编译log入手也看的不是很明白,所以最好的办法就是拆分问题,1、了解make otapackage的大致流程 2、amlogic刷机包的大致生...

2020-02-24 14:34:13 1893

原创 Android Q动态分区相关初步整理

Android 10上刷机使用了super.img,差分包多了dynamic_partitions_op_list,大致查询了下是新增了动态分区,从编译到生成差分包都做了一些修改,本次先整理大致分析,对这个更新点有初步的认识一、编译方面1.super.img的生成通过编译的log可以看到,super.img的生成makebuild/make/core/Makefi...

2020-01-06 18:39:06 10700 2

原创 partition has unexpected contents概率性问题处理

partition has unexpected contents问题,这类我们一般按刷机流程或者编译流程不对进行处理,不过也有概率性出现不匹配的情况,大概接触了几次,找到了大概的解决方案1、先看last_logpartition has unexpected contents[ 159.613007] failed to read blocks for diff[ 159.61...

2019-12-19 09:42:11 1051

原创 高通8.1平台AB升级差分流程问题

最近测试一个项目时高通8.1平台,每个版本做出来差分包有800M,因为版本中有个APK有700M,所以相当于这个APK没有走差分的流程,一开始有两个方面的猜想,第一种是做了限制,操过了一定大小的APK没有执行差分,第二种引入分割理论,将APK分割成小份进行差分一、大致流程二、问题来源三、问题优化四、问题探究一、大致流程这里不详细说,我们只看我们的单个问题,所以先...

2019-11-11 18:48:34 1345

原创 六、A/B 升级update_engine分析-Action流程

从上一篇我们已经知道具体的升级写入校验流程都是由InstallPlanAction,DownloadAction,FilesystemVerifierAction,PostinstallRunnerAction,这四个Action完成的,本篇主要讲解这四个的具体流程,我准备这些文件依然按照.h 和.cc进行分析一、InstallPlanAction二、DownloadAction...

2019-11-05 11:20:49 3425

原创 五、A/B 升级update_engine分析-UpdateAttempterAndroid

上一篇我们讲到了服务端启动的流程,本篇主要讲解主要升级流程,UpdateAttempterAndroid类包含的内容较多,所以单独讲解,这个文件看了很长时间,大概方法都已经了解,但是想了很久从哪儿开始梳理这个流程,不仅仅是我能看懂,而且能讲出来的很清晰,这是我想做到的,别问,问就是重点一、update_attempter_android.h 简要分析1、继承和构造函数 ...

2019-11-05 11:19:40 2902 5

原创 四、A/B 升级update_engine分析-服务端启动

以下我们将分析AB升级的核心内容 update_engine服务端,我们还是一样,看下该模块的编译文件和依赖。一、相关依赖 1LOCAL_MODULE := update_engine 2LOCAL_SRC_FILES := \ 3 main.cc 4LOCAL_STATIC_LIBRARIES += \ 5 libupdate_engine_android ...

2019-11-05 11:18:49 1848

原创 三、A/B 升级update_engine分析-客户端

本编将从两个方面分析客户端,原生测试模块update_engine_client和framwork层接口一、update_engine_client Android原生编译出了测试模块update_engine_client,在system/bin/下,我个人理解是与framekwork 层binder机制连接update_engine服务端是类似的,不过该模块增加了命令行测试的部分...

2019-11-05 11:17:59 4819 4

原创 一、A/B升级之系统image的生成

一、A/B升级之系统image的生成 本篇将对AB升级打开宏开关后make 和 makeotapackage的流程做分析,下面这张图是之前文档中所提到的按照对应文件打开宏开关,即可开启AB升级,但是代码里面针对该宏控也有对应代码处理,本次先分析device 和 build下的修改一、device主要修改最初加入了MTK_AB_OTA_UPDATER = yes去除cach...

2019-09-27 19:15:05 3834

原创 二、A/B 升级update_engine分析-整体模块

调试通了AB后确实想好好整理下这部分,其实与传统ota对比,我个人这样划分1、bootloder部分 2、kernel部分 3、framwork部分 4、update_engine核心 5、升级包的制作,而其中的大部分工作都来源于核心update_engine,在这里卡了很久,决定先从这里入手,按照framwork---->(binder机制)update_engine流程(设定对应...

2019-09-27 19:12:38 3384

原创 block格式差分包合并方法解析

采用合并差分包的方式,不过要做一些处理,以下是一些分析1、做出两个差分包对比两个升级包可以看出,我们只需要处理system 和vendor部分,其他驱动文件原生处理为了整包升级,所以01-03 和 02-03 中是一样的2、修改01-03升级包,修改updater-scrypt,以以下格式处理脚本文件if getprop("ro.build.date.utc") == "15...

2019-09-10 20:03:58 1407

原创 一些常用实用的命令整理

编译命令:1.make -jX X表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,这在配置好的电脑上特别有用,公司的16核ubuntu服务器执行make -j16只要不到20分钟,而双核PC上需要4个小时!2.make snod 这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等...

2019-09-05 17:37:42 551

原创 关于framwork解密流程优化分析

一、问题来源二、问题优化一、问题来源 我们都知道Android上如果升级包data区的话,会有解密的过程,这个过程uncryt.cpp中有详细的说明,大致意思就是recovery不能挂载并修改data分区,所以把包放在了dev/block/userdata节点上,并使用block.map文件知名在节点上的存储信息,大部分解密失败的问题在生成block.map时候就失败了...

2019-09-05 17:06:12 693

原创 MTK 9.0打开AB升级宏控

找到了一份MTKonline的文档具体的打开方法只是打开了MTK控制的宏开关,我们只需要按照对应的目录和文件添加进去,MTK_AB_OTA_UPDATE只是在原声的AB_OTA_UPDATE又嵌套了一层控制,不过在编译的时候遇到了两个问题编译错误一:这个问题的来源是因为disable build cache partition没有加到对应的boardconfig.mk文件中,A...

2019-08-10 11:52:48 1459

原创 二、Android BCB的作用

这篇很多部分来源于其他博客,我个人进行了总结,可以串联起来整个ota流程1、问题来源2、固件内容与开机流程3、开机BCB作用4、recovery升级交互流程1、问题来源查看解密流程和recovery.cpp升级流程,多次提到BCB相关1、从system到recovery需要用到BCB文件RecoverySystemService.java //设置BCBpublic bool...

2019-08-10 11:52:34 4065 2

原创 减小差分包文档分析

概述对于谷歌文档关于减小差分包大小,在Android代码中进行了确认,大致分为以下三部分,说明修改思路和具体修改内容,并给出相应总结。 源:https://source.android.com/devices/tech/ota/reduce_size一、编译初始化过程中处理文件排序二、编译生成文件(jar,zip,lib.so,apk)的内嵌时间戳处理三、其他生成镜像时处理(两个被弃用的...

2019-08-10 11:52:01 639

原创 Android9.0 vendor分区整包升级

1、涉及文件2、流程解析3、问题探讨1、涉及文件./build/make/core/Makefileota脚本 ./build/toos/releasetools/9.0FOTA包9.0源码2、流程解析本次问题是一家方案公司的编译环境有问题,经常出现升级报错vendor不匹配的问题,大致看了下升级脚本 修改为整包升级或者不升级两种情况,首先...

2019-08-09 14:11:23 5288

原创 LowmemoryKiller流程简图

2019-08-09 14:02:19 350

原创 MTK8.0 9.0 驱动部分升级解析

1、涉及文件2、流程解析3、问题所在4、问题优化1、编译涉及主要文件:2、流程解析MTK驱动部分分区的升级在编译阶段只由两个文件执行并完成build/make/core/Makefile在make otapackage 生成中间包时执行mt_ota_preprocess.py文件mt_ota_preprocess.py1、生成ota_upda...

2019-08-09 13:59:40 1034

原创 MTK Recovery image的OTA升级过程

本篇所分析的是MTKrecovery.img自身升级流程的分析,分为四个部分1、boot.imgrecovery.img的区分2、编译的流程,makeotapackage生成recovery-from-boot.p和install-recovery.sh3、差分包内容,正常升级boot.img4、开机执行流程,init.rc执行install-recovery....

2019-08-09 13:44:55 1753

原创 blockimgdiff中方法分析01

关于blockimgdiff文件,本篇文档将详细分析初步生成transfer对象和生成diff的字典,并对几个重要方法 进行解析.一、传入blockimgdiff的参数分析二、blockimgdiff中方法分析一、传入blockimgdiff的参数分析我们都知道生成差分包从ota_from_target_file.py 的WriteBlockIncrementalO...

2019-08-09 11:53:04 1454

原创 三年Android技术支持工作总结及心得

2016年7月份开始Android技术支持的工作,主要负责Android ota升级,包含了移动和物联网设备,其中自己也整理一些framwork和recovery升级相关的流程,最近开始分享出来,看到的朋友欢迎指正,当然,其中有一部分我也是从网上查到的2016年来到深圳后,当时Android技术一般,面试碰壁,找到了一份技术支持的工作,主要负责Android ota升级,基本上是从0...

2019-08-09 10:19:02 1391

原创 五、try_update_binary详细流程

五、try_update_binary详细流程本篇将介绍try_update_binary 执行升级包中的updater_binary可执行文件解析update-scrypt进行升级流程bootable/recovery/install.cppstatic int really_install_package(const std::string& path, bool* ...

2019-08-09 09:22:47 1375 1

原创 四、install_package详细流程

四、install_package详细流程本篇将介绍install_package的流程,将重点分析install.cpp和roots.cpp,大致分为1、UI设置2、升级包路径挂载3、分配内存空间4、校验升级包5、校验compatibility6、try_update_binary(下个篇幅单独讲解,核心内容)install.cpp //返回statu...

2019-08-09 09:22:07 5652 1

原创 三、sbin/recovery/服务流程-recovery.cpp main方法

三、sbin/recovery/服务流程-recovery.cpp main方法 本次将分析recovery.cpp main方法,其中会介绍一部分C++ 基础,话不多说,直接开始,我们都知道从bootloder引导分区后会判断misc的参数,如果是boot-recovery ,会驱动进入recovery模式,这部分后面会进行补充,暂时对主要流程进行二次分析1、加载分区表2、ge...

2019-08-09 09:21:19 1818 2

原创 一、ota流程之framwork installpackage流程

一、ota流程之framwork installpackage流程关于install_package的流程,大部分应该已经比较了解,按方法流程执行,这里我们流程上还是做简单说明,主要要要说明其中的一些细节1、setup-bcb2、block.map的生成按方法流程分析如下framwork/base/core/java/android/os/RecoverySystem....

2019-08-09 09:20:21 1750 3

原创 MTK 8.1 recovery_log分析

MTK8.1recovery_log分析01本次分析以对应last_log推出recovery主要的执行流程涉及文件:bootable/recovery/recovery.cppbootable/recovery/install.cppbootable/recovery/roots.cppcache/recovery_log/last_logout/targe...

2019-08-08 11:47:50 1086

原创 Ubuntu、windows双系统安装及相关问题

一、安装Windows系统1、下载大白菜装机工具安装到电脑,制作U盘启动项,放入需要重装的镜像win7系统2、插入U盘后、开启电脑按F11进入启动项选择U盘启动3、进入大白菜win8PE系统、如需对电脑磁盘分区进行修改,可进入磁盘管理程序、       如不修改直接选择系统重装、系统自动识别到镜像包、选择C盘为系统安装盘、点击确认、重启即可4、点击我的电脑--右键选择管理--磁

2016-07-08 19:44:40 458 1

原创 Android深度系列—Activity四种启动方式与栈原理

任务其实就是activity 的栈它由一个或多个Activity组成的共同完成一个完整的用户体验, 换句话说任务就是” 应用程序” (可以是一个也可以是多个,比如假设你想让用户看到某个地方的街道地图。而已经存在一个具有此功能的activity 了,那么你的activity 所需要做的工作就是把请求信息放到一个Intent 对象里面,并把它传递给startActivity()。于是地图浏...

2016-06-25 15:17:45 1674 1

转载 Android深度系列—分析Android-Universal-Image-Loader的缓存处理机制

讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西。看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制。看了UIL中的缓存实现,才发现其实这个东西不难,没有太多的进程调度,没有各种内存读取控制机制、没有各种异常处理。反正UIL中不单代码写的简单,连处理都简单。但是这个类库这么好用,又有这么多人用,那么非

2016-06-22 08:56:01 666

原创 Android深度系列一slidingmenu事件处理流程

目前SlidingMenu使用很常见,也很方便,下面对SlidingMenud的事件处理机制进行一下简单的分析:介绍: SlidingMenu分为SlidingMenu.java, CustomViewBehind.java, CustomViewAbove.java,核心文件 SlidingMenu.java继承自RelativeLayout类,包含CustomViewBeh

2016-06-21 15:58:07 687

原创 浅谈布局中ViewPager嵌套ViewPager问题

在开发布局中,从功能性,用户体验等方面设计时,会出现ViewPager中嵌套ViewPager的问题,下面从两方面考虑解决这个问题一、外层ViewPager不滑动,内层ViewPager滑动自定义外层viewpager,重写onInterceptTouchEvent方法,代码如下:public class BaseViewPager extends ViewPager{priv

2016-06-06 08:58:30 662

原创 Android几种自定义view,优化UI

一,自定义listview,gridview,实现在scrollview中的滚动,重写onMeasure方法,使listview,gridview不能自身滑动核心代码:public class MyListView extends ListView{public MyListView(Context context) {super(context);// TODO Auto-gene...

2016-05-28 13:37:50 1049

原创 Android中Widget (微件、小组件)

Widget (微件、小组件)1)写布局文件对于widget的布局文件有限制!不是所有的组件都能够使用的。   容器类视图目前只支持四种:LinearLayout,RelativeLayout,FrameLayout,GridLayout容器类目前支持的视图组件:AnalogClock 模拟时钟ChronoMeter 电子时钟、计时器ButtonImageButto

2016-05-21 15:36:49 1757

转载 Android中进行基于HTTP协议的网络访问基础

安卓中进行基于HTTP协议的网络访问 两种方式:HttpClient (apache开发)HttpURLConnection(google在发布安卓时在Java基础上修改得到的) 进行网络访问的基本步骤:1. 创建HC/UC对象2. 声明发起网络访问的方式(GET/POST)3. 进行网络连接4. 获得服务器响应的结果

2016-05-17 11:06:35 316

slidingmenu

实现APP中的侧滑菜单功能项目包

2016-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除