每日思考
以终为始,经常总结反思,才不会缘木求鱼
Android系统启动流程-桌面程序的启动 Android系统启动流程-桌面程序的启动
在Android启动流程-SystemServer分析中有提到,在SystemServer启动“Other”类型服务的时候,最后阶段会执行ActivityManagerService的systemReady()方法,这里就是启动桌面程序的入
2020-06-29
Android系统启动流程-ART虚拟机的启动 Android系统启动流程-ART虚拟机的启动
启动JVM的通用流程 加载虚拟机实现的动态链接库(Android中是so文件); 一般通过dlopen方法加载so文件. 设置启动参数,并使用JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*)方法创建虚
2020-06-28
Android中的Deep Link与 APP Link Android中的Deep Link与 APP Link
Deep link其实就是一种intent过滤器.可以直接进入APP特定的Activity. 如果APP中存在多个符合要求的Activity,会弹出一个选择框. App link一种特殊的deep link,需要验证网站网址. 用一
2020-06-28
Android系统启动流程-Native方法的注册 Android系统启动流程-Native方法的注册
在使用app_process 创建zygote进程的过程中会执行下面这些操作: 创建ART虚拟机 注册Native方法 找到ZygoteInit,通过反射调用它的main方法进入Java世界 这里说一下注册Native方法的一些细节.
2020-06-28
Android系统启动流程-SystemServer分析 Android系统启动流程-SystemServer分析
app_process64在启动zygote进程的时候,会从zygote进程fork出system_server进程. system_server的入口在SystemServer.java中 在Android启动流程-Zygote分析中已经
2020-06-26
使用VSCode阅读Android源码 使用VSCode阅读Android源码
在VSCode 中 ,打开命令面板进行编辑,可以使用UI页面编辑,也可以直接编辑json文件. 主要就是includePath,把主要的头文件路径都包含进去: { "configurations": [ {
2020-06-25
AOSP构建-Android.bp的理解 AOSP构建-Android.bp的理解
C/C++是一种非常古老的编程语言,在大型项目开发管理过程中,单靠MAKE,CMAKE等工具已经不满足需求了,因此催生出了各种个样的构建工具,比如Google自家的GN,Bazel等,还有CMake,XMake,Vcpkg等.工具虽然多种
2020-06-25
Android系统启动流程-Zygote分析 Android系统启动流程-Zygote分析
zygote是通过app_process或者app_process64命令行程序启动的. 先来看下app_process的流程: app_processint main(int argc, char* const argv[]) {
2020-06-25
Linux查看进程和线程信息 Linux查看进程和线程信息
psps -T -p 查看进程下所有线程信息 top 查看整体线程情况 top -H 查看指定进程的线程运行情况 top -H -p 查看当前活跃的进程 top
2020-06-24
Android启动流程-init进程分析 Android启动流程-init进程分析
基于Android 10 源码分析 之前在Android启动流程分析中已经大致分析了一下Android系统启动的过程,这里回顾一下: 上电,从Boot ROM中执行一段烧录好的代码加载bootloader bootloader执行,引
2020-06-22
TLS-Pinning TLS-Pinning
什么是SSL/TLS Pinning?将服务端提供的TLS/SSL证书内置到移动端开发的APP客户端中,当客户端发起请求时,通过比对内置证书和服务器端证书的内容,以确定这个连接的合法性. 我这里把Pinning翻译成“固定” Pinni
2020-06-21
FFmpeg简介 FFmpeg简介
模块库 avcodec 用于音视频编解码,支持自带的MPEG4,AAC,MJPEG等编码格式,还支持第三方的编解码,比如H.264(AVC,使用X264编解码器),H.265(HEVC,使用X265编解码器) avdevice 多媒体设备
Flutter-自定义闪屏页(SplashScreen) Flutter-自定义闪屏页(SplashScreen)
Splash Screen?对于Android应用来说,Splash Screen最熟悉不过了.比如为了让启动的时候app不现实白屏,或者为了弄个开屏广告用来盈利,都会用到Splash Screen. Flutter中如何自定义Splas
2020-06-19
Android中的ANativeWindow Android中的ANativeWindow
ANativeWindow是什么ANativeWindow是C/C++中定义的一个结构体,等同于Java中的Surface. Android NDK中可以访问到ANativeWindow. ANativeWindow中存放像素信息的结构是:
2020-06-19
linux使用fork方式创建进程 linux使用fork方式创建进程
代码#include <stdio.h> #include <unistd.h> int main() { printf("fork之前\n"); pid_t fpid; fpid = fork();
2020-06-15
UART UART
UARTUniversal Asynchronous Receiver/Transmitter,即通用异步收发传输器 UART是一种串行(串口),异步,收发协议. 作用:将并行数据转换成串行数据,所谓串行就是一位一位的传输. 像GPS模块,
2020-06-13
ARM架构基础知识 ARM架构基础知识
Architecture 中文可以是体系结构,也可以是架构,我这里用架构 一些专业术语可以在本科课程/书籍《计算机体系结构》中找到. 三种配置 A-Profile(Applications) 性能最高,用于运行复杂的操作系统,比如Lin
2020-06-12
AOSP的编译 AOSP的编译
aosp现在使用soong编译工具进行编译了,比之前的老版本编译要容易方便得多了. 步骤 配置好repo等工具 下载aosp源码 开始编译 模拟器演示或者刷写到真实设备上 其实这几个步骤都没什么好说的.第一二步按照要求下载工具和源码即可,
2020-06-12
1 / 3