Android framework源码
Android Framework 源码
WangRain1
have a nice day!
展开
-
android系统编译方式和流程
1.source build/envsetup.sh 脚本设置编译环境,加载一些编译方法例如 m、mm、mmm、lunch等2.lunch 指定要编译的那一套源码3.make -j8 开始编译开始编译从源码根目录的makefile文件开始,makefile中引用了 include build/core/main.mk文件在main.mk文件中引入了大量的mk文件,引用了源码的模块mk,这是系统编译的基石,其他模块的mk配置都是在这个基础上衍生的。4.android系统编译的mk大致分为三种,一种原创 2021-08-11 23:09:25 · 2802 阅读 · 0 评论 -
Android源码开发常用命令
monkey命令:adb shell monkey --pct-syskeys 0 --throttle 1500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 1000000000根据包名查询apk在手机上的安装路径:dumpsys package 包名 | grep codePath修改 Settings.system.里面的参数:adb shell settings put system "key" 1.原创 2021-08-11 23:07:47 · 422 阅读 · 0 评论 -
android framework.jar导入as编译
libs下导入fw.jar,并且右键 依赖 导入的是这个文件下的 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 编译 build.gradle中添加dexOptions{ javaMaxHeapSize"2g" jumboMode =true}allprojects{ repositories{ jcenter()}...原创 2021-08-11 23:04:51 · 470 阅读 · 0 评论 -
android源码生成.keystore文件到as中编译
1.生成1.android 源码目录build\target\product\security 取platform.pk8 platform.x509.pem放到一个目录下将cmd控制台切换到该目录,分别执行以下命令即可:2//生成shared.priv.pem;openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt 3//生成pkcs12;openssl...原创 2021-08-11 22:59:59 · 359 阅读 · 0 评论 -
android uid 和 pid 的理解获取
1.理解uid:uid 对于 应用来说其实就是指我们当前应用是在那个 group 组内就是指这个shareuserid,一个组内的uid相同,,并且具有相同的uid的应用才能共享用户内存pid:是指每个进程在liunx下的 进程的id 是唯一的。2.获取获取uid:PackageManager pm = getPackageManager();ApplicationInfo ai = pm.getApplicationInfo("com.speedsoftware.roote.原创 2021-08-11 22:56:56 · 854 阅读 · 0 评论 -
Java / Android 监控进程Crash异常
在Android/Java开发中经常遇到的就是程序突然崩溃了,这中崩溃是如何被捕获并且打印到控制面板的呢。抛出异常之后app就崩溃了,而不是整个系统崩溃是为什么?今天就从Android的角度来看看一个Android系统是如何崩溃的。1.异常监控的注册从Android系统启动流程知道,systemserver和每个app进程的启动都是通过Zygote进程孵化的。从Launcher桌面点击启动一个未启动过的app时,就会触发zygote孵化一个新的进程,从这里开始扯出系统对crash的处理。对于进程的创原创 2020-06-09 19:02:47 · 1737 阅读 · 0 评论 -
Android 主线程到底是什么、如何抛出ANR
作为 android 者对主线程的操作在开发中是非常频繁的,主线程是非常重要的线程,因为我们所有的UI界面都是通过主线程更新、绘制的。所以我们要足够了解他。从源码的角度看看为何ui必须在主线程更新、直接创建的handler为何就把线程给切换到了主线程呢?、主线程阻塞anr是如何抛出的?1.Android 主线程是在哪里创建的?android的主线程是在 app 进程创建时候就创建了,即当系...原创 2020-05-08 17:40:17 · 1530 阅读 · 0 评论 -
一个 Activity 窗口的创建和显示流程
在android开发中对于应用层开发来说创建窗口的方式很简单,直接通过创建Activity、Dialog、Toast等创建一个窗口显示到手机屏幕上,对我们开发者来说方便了不少。但是创建一个窗口的方式可不止这些方式,还有从底层直接起一个窗口,本章主要分析Activity是如何显示到屏幕上的。一个activity的显示大致分为三个层次: UI框架层 WMS层 SurfaceFlinger...原创 2020-04-30 16:20:40 · 895 阅读 · 0 评论 -
Android 动画的工作原理
在android系统中动画分为两种分别是基础动画和属性动画。对于动画的工作原理主要涉及到的是基础动画和属性动画的实现。本章主要分两大块:基础动画和属性动画1.基础动画对于基础动画的实现主要是嵌套在View的绘制流程中的,基础动画主要有旋转RotatleAnimation,缩放ScaleAnimation,透明AlphaAnimation,平移TranslateAnimation等都是An...原创 2020-04-28 19:17:57 · 1684 阅读 · 3 评论 -
源码学习《8》Handler,Message,MessageQueue,Looper,ThreadLocal 通讯机制
关于Handler通讯之前也看了好几遍,记忆慢慢模糊了,希望通过这次详细的整理能记忆的更久。本篇涉及的类比较多,为了更好的记忆,我采用了先整体在局部的叙事方式。先整体把流程梳理,再详细说明流程中涉及到的某些类。首先通过以往的章节源码学习,我们对一下流程应该都熟悉了init 进程,zygote进程,systemserver进程的启动 PMS启动后解析manifest.xml文件数据到app...原创 2019-12-17 18:47:23 · 572 阅读 · 0 评论 -
源码学习《7》Classloader 类加载机制 (热修复 2)实现篇
通过上一篇对Classloader的分析,对classloader的原理有了初步的了解。今天就在了解的基础上实现类的热修复。在做热修复之前首先我们来看看 MutilDexEnable 这个属性。1. MutilDexEnable 指定class文件到dex中我们知道如果我们项目很大,方法超过了65535 个方法数,就需要使用分包处理,大致是这样的android { defau...原创 2019-12-13 16:06:26 · 725 阅读 · 0 评论 -
源码学习《6》Classloader 类加载机制 (热修复 1)原理篇
不管是android 还是java项目我们知道我们的java文件都会通过 javac命令编译成二进制class文件,然后虚拟机再通过classloader类对class文件进行加载生成Class对象。其中java 和 android的classloader实现上还是有区别的,java主要加载的是 .class 而 android加载的是.dex 文件。本篇主要分析android classload...原创 2019-12-12 14:59:36 · 806 阅读 · 0 评论 -
源码学习《5》PMS 的启动 和 AndroidManifast.xml 解析流程
通过前两篇文章学习我们大致了解了,apk 资源的加载 和 XML 标签创建对象的过程,今天就来学习一下 Android app启动后Manifast中的 标签是怎么被识别的,activity / service等四大组件对象的创建 android 8.0。Manifast.xml的加载和解析? Activity 等四大组件的包装对象的创建?其实Manifast是在PackageManage...原创 2019-11-18 18:21:24 · 685 阅读 · 1 评论 -
源码学习《4》Launcher 启动 app 和 apk 资源的加载流程 (App 换肤原理 2)
Android开发中我们的apk资源是如何被加载到的,我们知道当我们点击桌面launcher 的图标拉起我们的app显示我们的页面资源。这个是如何被加载的呢?今天就引出两个看源码的问题 基于 8.0 源码:不同版本源码实现略有差异。Launcher启动app的流程? Apk资源是如何被加载到页面上的?1. Launcher 启动app的流程做过 launcher app 的同学都知...原创 2019-11-15 13:47:36 · 1334 阅读 · 0 评论 -
源码学习《3》Layout.xml 的解析和 xml 标签生成 View 对象的过程(App 换肤原理 1)
今天要学习源码的两个问题:Layout.xml布局是怎么加载解析的 Layout.xml中的 view 标签又是怎么被转化成对象的针对这两个问题引出源码学习的流程,带着问题去看源码。总体流程:问题 1 布局是怎么加载的 :首先我们最熟悉的代码肯定是:public class MainActivity extends AppCompatActivity { @...原创 2019-11-08 17:40:10 · 1057 阅读 · 0 评论 -
源码学习总结《2》Android 应用程序进程启动
通过上一篇学习android系统启动我们了解到了,init进程启动,zygote进程启动,systemserve进程启动,AMS等服务启动过程,最后启动第一个launcher 桌面进程启动。我们还有一个分支没有学习,就是应用进程的创建,今天就来学习应用进程的启动流程。应用进程的启动可分为两部分:AMS请求zygote进程创建应用进程 zygote进程创建应用进程1.AMS请求zygote创...原创 2019-08-21 16:12:03 · 589 阅读 · 2 评论 -
源码学习总结《1》Android 系统启动流程
对于NDK开发学习已经完结,并且成功的做出相应的案例,银行卡/身份证卡号识别,现在呢,伟大的学习路程又要开始了,接下来就是要学习系统源码framework相关的知识。(只做个人学习总结,学过就留点痕迹~~,不做长篇大论,谢谢 ^_^ )对于android源码学习,最开始肯定要了解以下android系统是怎么启动的,这是对android系统启动流程学习的个人总结,第一次学习源码还是要有个辅助 比...原创 2019-08-05 18:22:41 · 465 阅读 · 0 评论 -
Binder IPC跨进程通讯学习记录
IPC跨进程通讯的方式有 socket/管道/广播/binder,在android 中用的最广泛的就是binder几乎底层通讯都是使用binder来处理的例如:ActivityThread 和 IApplication等等,少数使用了socket 例如在zogit系统启动的时候。目录binder通讯原理代码调用流程binder优点binder通讯原理在手机系统中我们可...原创 2019-06-05 17:04:57 · 471 阅读 · 1 评论 -
Android 语言切换时发生了什么,源码是怎么调用的,对我们app有何影响,我们该怎么做去避免发生异常
在做应用的时候经常会碰到多语言的适配,在我们切换语言时候,我们的app到底发生了什么呢?以及切换语言经常出现的错误问题,比如空指针,fragment的问题等等。对于怎么适配多语言今天不是重点,重点是语言切换后我们的app去做了什么让她的语言发生了变化。以下情况都是在我们打开页面之后切换语言的,也就是我们app在前台,然后切换语言。(1)切换语言时代码调用流程(2)切换语言时候最容易导致的问...原创 2019-05-27 10:57:26 · 936 阅读 · 0 评论 -
Android SQLite 数据库不丢失数据自动升级流程
正常我们在开发中经常会遇到sqlite数据库升级的问题,比如增加字段/删除字段/表结构重构等等,随着apk版本的升高,不同版本可能需要对数据库进行修改,但是要求是数据库升级不能影响用户的已存数据,所以今天就来看看数据库升级流程是怎样的。目录SQLiteDatabase源码调用流程数据库自动升级流程 SQLiteDatabase源码调用流程 首先我们需要继承 SQ...原创 2019-04-12 17:37:18 · 1587 阅读 · 0 评论