自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

心中要有一片海的专栏

去发现,去改变

  • 博客(28)
  • 收藏
  • 关注

原创 Activity启动模式总结

相关文章其实很多了。通过对阅读调试相关源码后,我认为还是有必要按自己的理解梳理总结输出。核心源码在。

2023-04-19 23:15:00 538

原创 Android Binder图文详解和驱动源码分析

图文解释,配合Binder驱动带注释源码。理解Binder驱动实现。

2023-04-18 23:12:12 798

原创 Android 通用抓包方式

抓包思路有两种中间人的优势是简单方便,实时。hook的方式优势是原汁原味(比如可以看到两端握手的过程)。具体选哪一种,根据实际需求决定。

2023-03-27 20:00:00 1301

原创 如何通过so错误日志定位问题原因

so出问题对大多数人来说不是很好定位,之前同事遇到了so的问题,当时记录了分析的过程。这里就当做案例整理分享一下。问题的定位思路,最好的办法。就是从错误日志出发,一步一步往上追溯到错误的原因。上面的问题通过从错误日志出发,一步一步推导。最终就能找到问题原因。

2023-03-26 22:45:11 810

原创 Thinkbook 14p 开启S3

因为thinkbook 14p BIOS不支持开启 S3,所以这里只能查看其它方法。通过谷歌搜索后,发现可以通过修改DSDT实现开启S3。步骤提取ACPI 表格二进制到 dsdt.dat# cat /sys/firmware/acpi/tables/DSDT > dsdt.dat反编译ACPI表格到.dsl文件$ iasl -d dsdt.dat修改dsdt.dsl文件,开启S3参考这里修改编译修改后的dsl文件$ iasl -tc dsdt.dsl使用

2022-05-04 15:32:06 1986 4

原创 一个偶现的MP4录制问题解决过程记录

文章目录前言解决思路1. 定位MP4中哪块数据出现问题a. 查看adb错误日志b. 定位AOSP报错的源码位置c. 用gdb打印MP4中的hvccd. 根据ISO/IEC 14496-15文档,阅读hvcc2. 在代码中定位问题总结前言LG发现了一个偶现的录制问题,为了上线必须解决。这里记录一下问题解决的过程。问题的现象是这样的,偶然出现录制的视频会出现无法播放的问题,而且那个视频有些手机能播,有些不能播,很诡异。解决思路由于使用的是MediaPlayer播放出现问题,正好在我自己编译的Pixel

2022-02-24 22:52:49 1813

原创 5张图带你彻底理解红黑树(含完整Java实现源码)

目前最清晰的红黑树图解。通过与2-3-4树对比来讲解红黑树的添加和删除

2021-02-15 19:19:00 1532

原创 Lineage 17.1 源码编译(以 HTC 10为例)

文章目录一、下载源码添加设备相关的project二、编译配置环境变量执行编译一、下载源码╭─kevin@kevin-msi ~ ╰─$ mkdir lineage╭─kevin@kevin-msi ~ ╰─$ cd lineage╭─kevin@kevin-msi ~/lineage ╰─$ repo init -u https://github.com/LineageOS/android.git -b lineage-17.1 参考清华这个换源添加设备相关的proje

2020-12-20 21:49:21 1468 6

原创 一张图看懂原码/反码/补码之间的关系

最直观的原码/反码/补码图解

2020-10-24 22:51:28 1150

原创 nmap查找局域网中的jenkins服务器

使用nmap查找局域网中的jenkins服务器sudo nmap -sS -P0 -n --open --min-parallelism 1024 -T4 -p8080 10.0.16.0/20 \| grep 'Nmap scan report for' | cut -f 5 -d ' ' \| xargs -i -t curl -s -N http://{}:8080/login | grep -o "\[Jenkins\]"解析:-sS : TCP SYN扫描端口-P0: 跳过主机发现

2020-07-27 22:43:21 307

原创 Android JNI 局部引用溢出(local reference table overflow (max=512))

文章目录JNI的局部引用溢出问题原因探究和修复的方法什么是局部引用?局部引用溢出原因是什么?1. 在Native函数中,通过调用JNI函数创建大量Java对象2. 在Native子线程中,通过调用JNI函数创建大量Java对象额外说明JNI的局部引用溢出问题原因探究和修复的方法当深入使用JNI的时候,局部引用溢出的问题还是很容易遇到的。让我们一起来探究原因和修复方法什么是局部引用?局部引...

2019-11-17 13:15:02 1641

原创 Tasker控制米家App

文章目录原理分析Intent具体传输的数据,并构造Tasker Intent任务如何更加便捷的获取extra_scene_account和 extra_str_scene_id?总结原理米家App可以创建桌面快捷方式。如果创建手动触发的场景,例如关闭插座,然后将该场景发送到桌面快捷方式。点击桌面快捷方式就会执行关闭插座的操作。当我们点击桌面快捷方式时,其实就是发送Intent(有Androi...

2019-05-28 23:08:36 8175 6

原创 ART虚拟机GC清除SoftReference(软引用)源码解析

引言调用栈art::mirror::Object::SetFieldObjectWithoutWriteBarrier<false, true, (art::VerifyObjectFlags)0, true> object-inl.h:771art::mirror::Object::SetFieldObject&a

2019-03-07 14:42:15 1091

原创 Android事件分发源码阅读笔记

ViewGroup.java /** * 将动作事件(MotionEvent)转换到特定子View的坐标空间, * 过滤掉不相关的指针(每个手指对应一个指针)ID,并在必要时覆盖其操作。 * 如果child为null,则假定MotionEvent将发送到此ViewGroup。 */ private boolean dispatchTrans...

2019-02-16 15:36:30 242 1

原创 使用GDB进行Android Native调试

使用GDB远程调试指定Android进程的时候,经常要查询pid,然后再attach。为了简化步骤,就写了个简化脚本。具体使用GDB调试Android进程的技巧直接看官方教程就好了,链接地址:使用 GDBgdbserver attach脚本android_gdbserver_attach#!/usr/bin/env bashgdbServerPid=`adb shell ps | grep...

2019-01-31 00:32:16 875 1

原创 Tasker实现简易的Telegram新消息朗读

有人已经实现了用Tasker阅读微信消息播报+消息防撤回。传送地址:Tasker 一个配置实现微信朗读,微信消息播报+基础版的防撤回由于我日常主要使用微信和Telegram,qq已经很久没用了。网上没见有Telegram的配置,所以就自己捣鼓一个Telegram的消息朗读配置。这样我在用耳机听音乐,在家里面,还有连接车载蓝牙都可以播报新的Telegram消息了。安装软件TaskerAut...

2019-01-30 13:18:39 3239 4

原创 CLion开发编译调试Makefile项目

前言CLion之前只支持Cmake项目,不支持Makefile项目。从2018.2版开始提供对Makefile项目支持。官方博客的教程可以看这里Working with Makefiles in CLion using Compilation DB这里大概介绍一下。CLion通过加载Makefile项目的编译数据库(Compilation DB)来打开项目文件来完成代码补全, 静态分析, 跳转...

2019-01-28 15:19:30 32438 11

原创 SWIG 学习笔记

查看SWIG帮助swig - -help 可以看到语言特有的选项例如:swig -java -help常规选项 -addextern - 添加额外的extern声明 -c ++ - 启用C ++处理 -co <file> - 检查SWIG库中的<file> -copyctor - 尽可能自动生成复制构造函数 -cppe...

2019-01-26 17:45:57 3524

原创 搭建Android源码调试环境(四)——调试ART虚拟机遇到的问题

前言首先我们要知道App的进程都是由zygote进程fork出来的。zygote进程启动的时候已经执行了ART虚拟机的初始化和启动的操作,而zygote进程又是由init进程fork出来的。因此如果你只是想调试虚拟机运行阶段,那就直接调试App进程,而如果想调试ART初始化和启动阶段。那就需要先关闭zygote服务,然后通过gdbserver detach到init进程调试,然后再启动zygot...

2019-01-23 19:12:15 2089 2

原创 通过单反wifi同步照片到Android手机——使用Airnef Python脚本

前言本人使用的是尼康D750,自带wifi功能,奈何配套的Android App太难用了,至于怎么难用,我这里就不细说了,用过的都懂。总不能白瞎了wifi功能吧。找了一阵子发现了两个第三方通过逆向工程制作的工具。一个是qDslrDashboard这个app,功能很强大,可以通过手机控制相机,也可以浏览下载相机的照片,还可以协助拍摄延时摄影。另一个就是Airnef,一个python脚本,对PC有封...

2019-01-19 00:06:11 2371

原创 搭建Android源码调试环境(三)——调试C/C++(使用CLion)

前言aosp自带gdbclient.py脚本用于调试kevin@kevin-GS60-2PL /mnt/2ffc0bac-5896-499a-9ae6-79e610162482/aosp $ gdbclient.py usage: gdbclient.py [-h] [--adb ADB_PATH] [-a | -d | -e | -s SERIAL] ...

2019-01-18 20:54:47 6416 6

原创 搭建Android源码调试环境(二)——调试Java(使用AndroidStudio)

1. 生成Studio相关的文件编译idegen模块source build/envsetup.shmmm development/tools/idegen/执行以下命令development/tools/idegen/idegen.sh2. 源码导入Studio通过AndroidStudio打开AOSP根目录下的android.ipr文件3. 调试首先启动模拟器然后在fr...

2019-01-18 20:54:00 549

原创 搭建Android源码调试环境(一)——下载编译Android源码

1. 环境准备工作运行Ubuntu18.04系统的主机一台,或者更新的版本应该也可以。(我这里使用的是Linux mint 18.3,Ubuntu的衍生版本)内存配置越高越好。我的是i7-4710HQ + 16G内存磁盘空间至少200G。源码,编译产生的文件,ccache加起来会占用很多空间安装依赖组件sudo apt-get install libx11-dev:i386 libr...

2019-01-18 17:13:44 1221

原创 单反同步删除RAW文件

单反相机的JPG和RAW文件同步删除我使用的是D750,使用jpeg+raw双存储的方式。在旅行的过程中,通过相机自带wifi,将jpeg照片同步到手机,然后就可以浏览,删除,修图,发票圈了。这样在旅行的过程中就筛选了大部分照片,回来的时候就不用那么辛苦的筛选照片了。毕竟快门一时爽,选片火葬场!但是手机只是筛选了jpeg,回到家导入电脑的是raw,这里就需要一个工具同步删除raw文件。所以就写...

2019-01-18 13:42:57 4067 1

原创 Android Framework学习——如何加入并编译自定义的模块

研究AndroidFramework源码免不了要加入自己的模块进行调试学习。这里将会介绍如何加入自己的模块,并将相应的模块push到真机上进行调试 编写Android.mk具体在哪里编写呢?这里先解释一下目录的含义/home/kevin/Downloads/cm13htcm9 我下载的cm源码所在的目录 /home/kevin/Downloads/cm13htcm9/packages/apps/

2016-12-04 21:12:33 5227

原创 Android性能优化——界面流畅度优化

序言首先流畅度不仅仅是受到代码的影响。也会跟机器的硬件配置有关系。所以第一点需要明确的是,流畅度最低保证在哪个硬件配置之上。这样有了一个基点之后,才能比较好明确优化目标。不然你拿一个两三年前的机子来做优化。那就真的是吃力不讨好的事情。流畅度跟两方面有关:一、机器的配置,二、编写的代码。首先明确一点:流畅意味着 每一帧的绘制在16ms内完成。那如果在你选的最低配置的机子上达到了流畅,那就没必要优化了。

2016-11-20 22:53:07 1517

原创 Java注解(Annotation)原理详解

注解在Java中到底是什么样的东西?具体是如何实现的?我想刚刚接触注解的时候大家都会有这个疑分析测试的代码:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface HelloAnnotation { String say() default "Hi";}

2016-08-10 18:09:34 32885 40

原创 try catch 对性能影响

引言之前一直没有去研究try catch的内部机制,只是一直停留在了感觉上,正好这周五开会交流学习的时候,有人提出了相关的问题。借着周末,正好研究一番。讨论的问题当时讨论的是这样的问题: 比较下面两种try catch写法,哪一种性能更好。 for (int i = 0; i < 1000000; i++) { try { Ma

2016-07-10 19:52:06 43792 14

空空如也

空空如也

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

TA关注的人

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