自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Android进程间通信之一:Binder机制学习

Binder机制学习Binder驱动Binder核心APILinux 使用两级保护机制:0 级供系统内核使用,3 级供用户程序使用。Linux 下的传统 IPC 通信原理Linux 下的传统 IPC 通信原理Binder通信过程ServiceManager进程启动MMAPBinder驱动binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理。主要是驱动设备的初始化(binder_init),打开 (binder_open),映射(binder_mmap)

2021-08-17 20:36:10 249

原创 JS学习笔记

JS学习笔记js和java的异同点变量声明函数声明js中的变量提升和函数提升为什么有变量提升总结js和java的异同点首先,js的语法和kottlin的语法有些相似。比如var,方法声明用 function 方法名称 (参数名称...){ //方法内部逻辑 } 还有变量类型声明 :数据类型 : 变量名=值区别:一:js的数据类型和java类似。只不过js中的数据类型number将java中的int,double,float整合了。 二:js中可以不用声明变量

2021-03-18 19:57:11 4558 18

原创 协程原理再议

协程再议关于协程的一些理解基础框架层源码分析实战分析反编译后代码分析关于协程的一些理解协程挂起让异步代码可以像同步代码一样调用,但其本质还是同步,即协程体中的代码其实是同步。因为协程也只是对线程池的封装,所以需要了解些线程的一些知识。线程本身已经有的协程也会有,但是协程有的线程不一定有编译器会为每一个挂起函数生成一个匿名内部类,其继承SuspendLabmba类重写其invokeSuspend方法,这个方法里面即为协程体的代码【大致内容请先了解】编译器会对协程体中的挂起函数和普通函数

2021-12-03 19:58:47 29

原创 Android逆向之--------常见Davlik字节码解释

破解流程破解流程相关知识寄存器复杂指令集和精简指令集jvm和davlik的一些区别常见Davlik字节码解释破解程序分析修改smail文件重新签名破解流程破解Android程序流程:反编译—>分析–>修改–>回编译–>签名,这些都是在命令行中操作,当然也有集成了这些操作的工具:macos:Android-Crack-ToolWindows:Android Killer相关知识寄存器这里解释下寄存器的概念,寄存器是用来存储寄存器是CPU内部用来存放数据的一些小型存储区域

2021-11-24 21:11:08 2763 4

原创 协程理解心得-初探

这篇文章是我个人对协程的理解,在探索的过程当中写下的体会,这篇博客会一直有改动(对协程的理解更加深入,排版比较丑,后期博客更新完会调整排版)协程一,协程作用域Scope二,协程的挂起和恢复三,我是谁?【协程】一,协程作用域Scope属性:协程作用域里面就一个变量context协程的上下文,协程上下文是一组符加到协程中的对象,它是各种不同元素的"集合",可以包括协程执行的主元素Job、负责协程线程策略的元素CoroutineDispatcher、协程标识和名称CoroutineName、处理未被捕

2021-11-18 22:50:15 2426

原创 Android逆向之--------常用软件安装

Android逆向系列文章目录第一章 Android逆向学习入门之软件安装文章目录Android逆向系列文章目录前言一、ApkTool使用apktool进行反编译apk二、smali/baksmali三、dex2jar四、010 Editor五,使用起来最简单的工具(图形化界面)基本使用总结前言本篇文章讲解的是学习逆向需要安装的一些软件一、ApkTool官网下载:ApkTool下载地址Android逆向分析领域最久远的工具之一,提供了Android APK的反编译和回编译的功能,

2021-11-12 13:14:00 3668

原创 Android 四大组件之一:BroadCastReceiver动态注册广播流程

动态注册广播流程动态注册广播流程广播发送流程动态注册广播流程1.在Activity中动态注册广播时,调用registerReceiver方法,会调用到ContextWrapper的registerReceiver方法:2.这个方法内部,mBase其实就是一个ContextImpl类型的对象,所以会执行ContextImpl类的registerReceiver方法经过registerReceiver重载最终会调用到registerReceiverInternal这个方法中,在这个方法中会先将s

2021-10-05 12:36:13 216

原创 AndroidV1,V2,V3签名原理详解

AndroidV1,V2,V3签名原理及APK加密技术原理背景介绍不同的签名版本之间的区别V1采用方案V2采用方案V3采用方案背景介绍一,Android打包完APK都要进行签名才能够安装到手机上,这是因为在安装的时候系统会进行检测,平时我们直接点AS里面那个绿色的运行按钮也能够直接安装到手机上,这是因为其实它也进行了签名,只不过AS自动帮我们做了这个操作有个默认的签名。二,签完名后的APK安装包安装到手机上时,系统会保存我们这个签名文件,之后启动我们的APP的时候根据使用的签名版本(V1,V2,V3)

2021-10-02 18:10:37 646 1

原创 Service中是如何产生ANR的?

Service中是如何产生ANR的?Service中是如何产生ANR的?Service启动流程遗留问题:Service中是如何产生ANR的?Service有两种,前台服务超时为SERVICE_TIMEOUT=20S后台服务超时为SERVICE_BACKGROUD_TIMEOUT=200S根据变量ProcessRecord.execServicesFg来决定是前台服务还是后台服务Service TimeOut是位于“ActivityManager”线程中的AMS.MainHandler收到SERVI

2021-08-28 12:43:18 81

原创 Android 产生ANR后的Trace文件的解析

第一个框中第一二行说明了发生ANR的进程ID,名称和时间第三个框中“main” prio=5 tid=1 Native说明了线程名称,线程优先级,线程锁id和线程状态。tid不是线程id,是一个在Java虚拟机中用来实现线程锁的变量,线程状态分为以下几类:状态 值 说明THREAD_ZOMBIE 0 TERMINATED 线程死亡,终止运行THREAD_RUNNING 1 RUNNABLE or runn.

2021-08-17 20:39:56 88

原创 关于Signal Catcher线程中对线程的理解

首先简述下Signal Catcher,Signal Catcher线程接受到kernel系统底层的消息进行dump当前虚拟机的信息并且设置每个线程的标志位(check_point)和请求线程状态为挂起,当线程运行过程中进行上下文切换时会检查该标记。等到线程都挂起后,开始遍历Dump每个线程的堆栈和线程数据后再唤醒线程。更多内容在我的其他博客中进行查阅~~,本文重点讲的是在分析Singal Catcher时对线程有了更新的了解。在Android里面只能通过pthread_create去创建一个线程,T

2021-07-13 18:34:29 137 1

原创 Android ANR分析(trace文件的产生流程)

ANR信息获取(trace文件的产生流程)首先收集需要dump trace的进程并给对应进程发送dump trace的信号接着分析最后一步向收集到的进程发送信号首先收集需要dump trace的进程并给对应进程发送dump trace的信号1.当一些带有超时机制的系统消息(如:Service的创建)判定超时后,会调用系统服务AMS接口,收集ANR相关信息并存档(data/anr/trace, data/system/dropbox)2.进入到AMS中,AppError会先进行筛选(1.当前进程正在进

2021-07-13 18:32:38 248 1

原创 Android沉浸式效果(隐藏标题栏)

Android沉浸式效果(隐藏标题栏)设置全屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);1.如果是直接继承Activity的requestWindowFeature(Window.FEATURE_NO_TITLE);2.如果是直接继承AppCompatActivity的if (getSupportActionBar

2021-04-08 14:39:29 59

原创 Android自定义崩溃收集器捕获java层和native层崩溃异常日志

在 Applicaiton中进行初始化崩溃收集器public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); //初始化崩溃收集器 CollectCrashUtils.initColleteCrash(); }}2.收集java层崩溃和native层崩溃public class CollectCra.

2021-02-25 16:23:20 768 8

原创 Android 10.0后创建文件createNewFile()和创建文件夹mkdirs()均失败解决方案

昨天往项目中添加Android自定义异常捕获的工具类时(参考Android自定义捕获Application全局异常)碰到一件很诡异的事情,createNewFile一直报no such file or directory,往前追发现是mkdir失败了(mkdirs也一样fail),网上搜了很多都说是AndroidManifest.xml中没有配置读写sd卡的权限(实际上我已经配置了),最后才定位到是android10之后不能问题。附上我最后解决问题的关键代码段:在AndroidManifest.xml

2021-02-25 16:11:12 3669 14

转载 2021-02-23

抓包大全 通过Charles抓取Android的Https链接数据Android 实现抓取Https数据1.为啥要会抓包2.电脑手机同一局域网,设置手机手动代理。3.抓取Https,Charles需要设置什么4.抓取Https,手机需要设置什么5.Android 7.0 以上Charles无法抓取HTTPS包解决6.完结撒花1.为啥要会抓包a.当公司没有接口文档,但需要做接口测试的时候,需要通过代理工具,对接口进行抓取。b.当开发上传图片时,不知道自己到底上传没上传,这时候就可以通过抓包

2021-02-23 19:57:04 265

原创 Android:View的getLocalVisibleRect()和getGlobalVisibleRect()的区别

代码片段: ImageView rectImage = findViewById(R.id.rect_image); rectImage.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect loc

2021-02-19 18:38:31 1502 11

原创 Android获取状态栏高度

Android获取状态栏高度private int getStatusBarHeight(Context context) {int result = 0;int resourceId = context.getResources().getIdentifier(“status_bar_height”, “dimen”, “android”);if (resourceId > 0) {result = context.getResources().getDimensionPixelSize(

2021-02-19 17:19:29 294

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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