![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Framework
文章平均质量分 62
邓瑞军说HelloWorld
奔跑在前线的码
展开
-
深入探讨 Android 的 View 显示过程与源码分析
视图加载和初始化XML 布局文件被解析并创建 View 实例。方法被调用,完成视图和子视图的初始化。视图附加到窗口当 View 被添加到窗口时,方法被调用。可以在此方法中进行与窗口相关的初始化工作。测量视图在布局过程中,onMeasure方法被调用,用于测量 View 的大小。通过参数来确定 View 的测量模式和尺寸。视图大小变化当 View 的大小发生变化时,方法被调用。可以在此方法中根据新的大小进行调整。布局子视图在布局过程中,onLayout。原创 2024-05-31 08:39:10 · 5709 阅读 · 233 评论 -
Android 深入系统源码探讨 Activity、Window 和 View 的关系与实践
Activity 创建并管理一个 PhoneWindow 对象。6.2、PhoneWindow 是 Window 的具体实现,负责管理窗口的视图和装饰。6.3、PhoneWindow 通过 DecorView 容纳内容视图。6.4、Activity 的布局文件通过 setContentView 方法设置到 PhoneWindow,并最终成为 DecorView 的子视图。6.5、ViewRootImpl 连接窗口管理器(WindowManager)和视图层次结构,负责窗口的绘制和输入事件处理。原创 2024-05-27 09:04:23 · 4611 阅读 · 204 评论 -
Android 系统日志(Log) JNI实现流程源码分析
Java Native Interface (JNI) 是一种编程框架,使得Java代码能够与用其他编程语言(如C和C++)编写的本地代码进行交互。JNI允许Java代码调用本地代码的函数,也允许本地代码调用Java代码的函数。下面是对JNI机制的详细概述,包括其基本原理、工作流程、常见用途和示例代码。Android日志系统主要由Log类和__android_log_print等C/C++函数组成,提供了记录调试信息的功能。原创 2024-05-20 09:42:52 · 11946 阅读 · 250 评论 -
Android framework配置默认屏幕亮度值源码分析
在Android中,config.xml文件用于配置各种系统设置和资源。对于屏幕亮度的配置,config.xml并不是直接用于设置屏幕亮度的地方,但它可以包含默认的系统设置和一些相关的参数。以下是如何在config.xml中配置一些与屏幕亮度相关的设置的详细步骤。通过在config.xml中配置屏幕亮度相关的参数,可以为Android系统提供默认的亮度设置和自动亮度调节的参数。这些配置会在系统服务中被读取并应用,从而影响系统的亮度控制行为。原创 2024-05-16 18:16:17 · 10897 阅读 · 169 评论 -
WAYS TO UPDATE YOUR DEVICE
转载:http://www.xanh.co.uk/ways-to-update-your-device/#more-135 There are few methods of getting the latest firmware onto your device, most of them require one ingredient: correctly signed (incremental转载 2015-10-19 16:09:05 · 3566 阅读 · 0 评论 -
Android 几种系统升级方式详解
◆ /cache/recovery/command:recovery命令,由主系统写入,每一行就是一条命令,是以下命令的组合:● --wipe_data:擦除用户数据,会清除/data分区和/cache分区● --wipe_cache :擦除/cache分区● --update_package=path: 表示要进行OTA升级,recovery使用路径为path的OTA升级包● --send_intent=anystring: 传递的intent。将system.img镜像写入到系统的system分区。原创 2024-05-11 17:47:05 · 9974 阅读 · 54 评论 -
Android 开机启动模式源码分析
终于明白了,在充电的时候,如果长按Power键2秒钟,就会从新启动Android系统,他会记录好启动参数,要不然重启是又会来到充电界面,而是要去到解锁界面完成启动了;解析出来后,马上调用函数property_set设置,供后面get使用。reboot具体参数就不分析了,有兴趣自己研究!看到这里,至少在开机的时候,面对两个现象【如果不是低电,正常情况是可以启动的。】应该有很清楚的认识了吧!原创 2024-05-10 10:26:41 · 3167 阅读 · 49 评论 -
Android 如何启用user版本的adb源码分析
不过打开之后,对于user 版本adb shell 开启的还是shell 权限,而不是root 权限,如果您需要root 权限,需要再改一下system/core/adb/adb.c 里面的should_drop_privileges() 这个函数,在#ifndef ALLOW_ADBD_ROOT 时return 0;看到default.prop了,其实又是一个专题啊,有时间后面再介绍了,在这里当作没有看到吧!通过上面的代码片段,可以知道ADDITIONAL_DEFAULT_PROPERTIES的值;原创 2024-05-10 10:15:47 · 2388 阅读 · 6 评论 -
Android packageinstaller之权限获取及展现源码分析
Android packageinstaller之权限获取及展现源码分析原创 2024-05-09 09:04:27 · 2169 阅读 · 2 评论 -
Android 异常开机半屏重启代码分析
备注:和屏幕初始化旋转有关系,把build_prop旋转90度,改为0度就不会有这个现象。原创 2024-05-08 15:06:29 · 2311 阅读 · 2 评论 -
Android 终端查看CPU信息源码分析
终端获取信息原创 2024-05-08 14:53:46 · 2276 阅读 · 0 评论 -
Android 系统常用广播
系统广播列表原创 2024-05-08 11:46:20 · 2648 阅读 · 0 评论 -
Android 启动提示Android 正在升级...提示源码分析
正常情况下烧录的新机会有这个提示,因为系统启动时候要对系统APP做DexOpt优化,流程如下:进入performBootDexOpt函数:提示框代码如下:而提示框的Tile和Msg如下:原创 2024-05-08 11:33:01 · 2236 阅读 · 1 评论 -
Android 开机启动扫描SD卡apk流程源码分析
胜利的果实:行09825 scanPackageLI,走到这里就和扫描系统盘的apk一样的流程了。原创 2024-05-08 09:56:19 · 2418 阅读 · 0 评论 -
Android 按键消息流程源码分析
InputDispatcher类是负责把键盘消息分发给当前激活的Activity窗口的,而InputReader类则是通过EventHub类来实现读取键盘事件的,InputReader实列mReader就是通过这里的InputReaderThread线程实列mReaderThread来读取键盘事件的,而InputDispatcher实例mDispatcher则是通过这里的InputDispatcherThread线程实例mDisptacherThread来分发键盘消息的;到这里,相关的组件都已经被创建了。原创 2024-05-08 09:40:51 · 3049 阅读 · 0 评论 -
Android 系统启动流程源码分析
servicemanager用来管理系统中所有的binder service,不管是本地的c++实现的还是java语言实现的都需要这个进程来统一管理,最主要的管理就是,注册添加服务,获取服务。进入的代码位置为:frameworks\base\core\java\com\android\internal\os\ZygoteInit.java。通过上面的共享库和资源加载preload(),整个虚拟机的资源都是共享的,当有fork出其他的虚拟机时候,就可以节省资源了,提高了效率!此异常是在哪里处理的呢?原创 2024-05-07 15:54:33 · 3084 阅读 · 12 评论 -
Android Dalvik虚拟机的启动过程源码分析
从前面的调用过程可以知道,参数array指向的是全局变量gRegJNI所描述的一个JNI方法注册函数表,其中,每一个表项都用一个RegJNIRec对象来描述,而每一个RegJNIRec对象都有一个成员变量mProc,指向一个JNI方法注册函数。这一步执行完成之后,Dalvik虚拟机的创建和初始化工作就完成了,回到前面,即AndroidRuntime类的成员函数start中,接下来就会调用AndroidRuntime类的另外一个成员函数startReg来注册Android核心类的JNI方法。原创 2024-05-07 09:13:26 · 2798 阅读 · 0 评论 -
Android system property运作流程源码分析
属性是在整个系统中全局可见的。如果属性是有“net.”字符串开头,当设置这种属性的时候,“net.change”这条属性也会被自动设置,其内容设为最后更新过的属性名,用来记录net.*属性上面的变化。由/bionic/libc/bionic/system_properties.c中的__system_properties_init()来初始化属性系统的共享内存。在/system/core/include/private/android_filesystem_config.h中有各种权限的定义。原创 2024-05-06 16:08:45 · 3794 阅读 · 5 评论 -
Android4.4真机移植过程笔记(三)
修改相关的makefile,把apkencryptor加入到PRODUCT_PACKAGES中,如修改build/target/product/base.mk(H10,OK1000没有修改也是没有问题的),把安装签名校验去掉就OK了,因为我们的加密APK是不要校验的,这里改为所有APK都不要签名校验了,后面再优化下,只把自己的APK去掉校验,而第三方的还是要签名校验的!WindowManager.java真加了很多标志位,之前变量名没有提供出来,所以现在的值固定了,和原生的有冲突了!原创 2024-04-30 16:29:40 · 3268 阅读 · 4 评论 -
Android4.4真机移植过程笔记(二)
Android4.4和4.2分区表parameter的配置也不一样,4.4中多了一个metadata参数,如果不配置这个,系统烧录后会起不来,metadata具体什么用目前不是很清楚,网上也没有查到相应的资料!如果你要完成自己很好的定制,你必须的了解Android的Overlay机制,这里有一篇不错的博文:http://www.cnblogs.com/galensphang/p/3826642.html。不得了,报错,重启…添加相应的变量(注意:你应该很清楚,那些资源该加,那些不该加,应该怎么加!原创 2024-04-30 15:24:20 · 3572 阅读 · 5 评论 -
Android4.4真机移植过程笔记(一)
3、添加新产品编译项配置文件,该配置文件在执行source build/envsetup.sh时,被加载执行$ vim device/mycompany/mytable/vendorsetup.sh在vendorsetup.sh文件时添加下面一条命令,用于向编译系统添加编译项,新添加的产品名为:myproduct,编译类型为eng。创建新产品的编译项就是创建上述几个mk文件的过程。不同的手机厂商对应device/下不同目录,在厂商目录下放置该厂商的产品相关信息,我们厂商名定义为mycompany。原创 2024-04-30 15:09:50 · 3314 阅读 · 3 评论 -
Android Font绘制流程及源码分析
## 如果文章字体看得不是很清楚,大家可以下载pdf文档查看,文档已上传~oo~补充:觉得本文对你有用,麻烦点赞或关注或收藏,你的肯定是我创作的无限动力,谢谢!!!原创 2024-04-30 09:25:00 · 2434 阅读 · 2 评论 -
Anddroid系统APK卸载流程源码分析
然后去删除/data/app-lib下面的应用程序的library信息,但因为这里的nativeLibraryFile为/data/app-lib/packageName,和前面介绍的APK安装过程中的目录/data/app-lib/packageName-num不一样,所以实际上,这里并没有真正的去删除library目录。在deleteInstalledPackageLI方法中,分为两步去卸载应用:第一步删除/data/data下面的数据目录,并从PMS的内部数据结构上清除当前卸载的package信息;原创 2024-04-29 16:53:14 · 2641 阅读 · 1 评论 -
ACTION_POWER_DISCONNECTED广播使用解析
在做项目的时候,要求拔出USB接口要删除指定文件,达到某功能;就想到利用ACTION_POWER_DISCONNECTED广播。1、 配置文件AndroidManifest.xml原创 2015-11-02 09:05:54 · 8925 阅读 · 0 评论 -
Android Dalvik虚拟机JNI方法的注册过程源码分析
当参数insns的值不等于NULL的时候,函数dvmSetNativeFunc就分别将参数insns和func的值分别保存在参数method所指向的一个Method对象的成员变量insns和nativeFunc中,而当insns的值等于NULL的时候,函数dvmSetNativeFunc就只将参数func的值保存在参数method所指向的一个Method对象成员变量nativeFunc中。Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。原创 2024-04-26 17:07:26 · 2965 阅读 · 7 评论 -
Android PackageManagerService流程详细分析(一)之启动
Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程,本文将详细分析这个过程。应用程序管理服务PackageManagerService安装应用程序的过程,其实就是解析析应用程序配置文件Android原创 2015-10-27 17:42:43 · 4179 阅读 · 1 评论 -
Android动画自定义解析
原理分析:首先说Animation(android.view.animation.Animation)对象,无论是用纯java代码构建Animation对象,还是通过xml文件定义Animation,其实最终的结果都是 Animation a = new AlphaAnimation();Animation s = new ScaleAnimation();Animation r = new Ro原创 2015-10-08 12:50:37 · 2466 阅读 · 0 评论 -
Android Dalvik虚拟机JNI方法的注册过程分析
Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。也就是说,JNI方法是直接在本地操作系统上执行的,而不是由Dalvik虚拟机解释器执行。由此也可看出,JNI方法是Android应用程序与本地操作系统直接进行通信的一个手段。在本文中,我们就详细分析JNI方法的注册过程。先从System.loadLibrary开始吧… framework原创 2015-09-17 10:51:54 · 2685 阅读 · 0 评论 -
apk安装时位置推荐流程
frameworks\base\services\java\com\android\server\pm\PackageManagerService.java 注意是在InstallParams类: 进入: frameworks\base\packages\DefaultContainerService\src\com\android\defcontainer\DefaultContainerS原创 2015-09-29 17:02:16 · 2526 阅读 · 0 评论 -
apk安装时预留空间判断
在apk安装的时候会来到这里: frameworks\base\services\java\com\android\server\pm\PackageManagerService.java 进入到:checkFreeStorage函数,注意这里只是计算data分区的空间 frameworks\base\services\java\com\android\server\DeviceStorage原创 2015-09-29 15:20:56 · 3928 阅读 · 0 评论 -
Android 开机动画源码分析
Android开机动画有好几个,这里只介绍原创 2014-09-14 17:35:58 · 2681 阅读 · 1 评论 -
Android PackageManagerService流程详细分析(二)之installer
本节介绍下pkms与installd之间的联系以及installd服务的具体实现: 通过上图可以看出,他们之前的桥梁是installer,下面是installer主要的代码结构: 注意两点: 1、函数接口(左): 2、LocalSocket通信(右): 而服务installd在系统启动的时候,通过解析脚本文件init.rc就完成启动了: installd的代码路径以及结构如下: 下原创 2015-10-28 13:13:08 · 2988 阅读 · 0 评论 -
Android PackageManagerService流程详细分析(三)之PackageHandler
再回到(一),看到在SystemServer.java有这样一行代码: pm = PackageManagerService.main(context, installer, factoryTest != SystemServer.FACTORY_TEST_OFF, onlyCore);PackageManagerServi原创 2015-11-02 12:56:49 · 3831 阅读 · 0 评论 -
Android PackageManagerService流程详细分析(五)之packages
接着上一节(四)的分析,看看上一节的PackageManagerService构造函数的代码如:public PackageManagerService(Context context, Installer installer, boolean factoryTest, boolean onlyCore) { // 前面省略... // 第二节讨论过原创 2015-11-05 10:38:39 · 3136 阅读 · 0 评论 -
Android PackageManagerService流程详细分析(四)之权限
接着上一节(三)的分析,看看上一节的PackageManagerService构造函数的代码如:public PackageManagerService(Context context, Installer installer, boolean factoryTest, boolean onlyCore) { // 前面省略... // 第二节讨论过原创 2015-11-03 11:33:57 · 4231 阅读 · 0 评论 -
Android PackageManagerService流程详细分析(六)之优化系统库
接着上一节,继续:public PackageManagerService(Context context, Installer installer, boolean factoryTest, boolean onlyCore) {......// 上一节分析内容mRestoredSettings = mSettings.readLPw(sUserManager.getUsers(f原创 2015-11-06 09:14:03 · 2750 阅读 · 0 评论 -
Android 系统时间更新机制
系统设置–日期和时间–自动确定日期和时间: 智能机 提供2类日期和时间同步方式: 使用网络提供时间 使用GPS提供时间 以及”自动确定时区“的选项。 Android 之时间和日期的自动同步 那就是说,我们可以通过如下3种方式自动设置我们的时间和日期: A、可以分别从SIM1和SIM2卡的无线通信网络(2G/3G/4G)获得 B、通过WiFi连接到Int原创 2015-09-21 11:17:51 · 12019 阅读 · 0 评论 -
Android开机启动扫描SD卡apk流程
在开机的时候,装在SD卡的apk和装在系统盘的apk扫描过程不一样,系统盘apk在系统启动过程中扫描,而SD卡上的就不是,等系统启动好了才挂载、扫描,下面就说下SD扫描的流程:在SystemServer启动MountService: MountService构造函数如下: 上面关键行01461,注意传进去的参数,这个很重要,进入这个函数: 重点看行00126: 这就是回调函数onDaemon原创 2015-09-23 19:57:10 · 4429 阅读 · 0 评论 -
Android PackageManagerService流程详细分析(七)之监控扫描指定APP目录
继续看构造函数:public PackageManagerService(Context context, Installer installer, boolean factoryTest, boolean onlyCore) { ...... // 1 // Find base frameworks (resource packages without code原创 2015-11-14 12:44:31 · 3643 阅读 · 2 评论 -
packageinstaller之权限获取及展现
1、源码分析:Packageinstaller主要是有界面的安装和卸载,先看看源码大概: AndroidManifest.xml里面的组件: 先看看PackageInstallerActivity.java文件,在安装的时候,会启动这个Activity,下面是OnCreate函数的代码片段: 前面是解析了一大堆APK的信息,后面最主要的调用了initiateInstall函数,下面看看init原创 2015-10-14 08:59:25 · 4601 阅读 · 0 评论