源码
文章平均质量分 69
源代码
邓瑞军说HelloWorld
奔跑在前线的码
展开
-
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 · 18856 阅读 · 250 评论 -
Android framework配置默认屏幕亮度值源码分析
在Android中,config.xml文件用于配置各种系统设置和资源。对于屏幕亮度的配置,config.xml并不是直接用于设置屏幕亮度的地方,但它可以包含默认的系统设置和一些相关的参数。以下是如何在config.xml中配置一些与屏幕亮度相关的设置的详细步骤。通过在config.xml中配置屏幕亮度相关的参数,可以为Android系统提供默认的亮度设置和自动亮度调节的参数。这些配置会在系统服务中被读取并应用,从而影响系统的亮度控制行为。原创 2024-05-16 18:16:17 · 17694 阅读 · 169 评论 -
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 · 5138 阅读 · 6 评论 -
Android packageinstaller之权限获取及展现源码分析
Android packageinstaller之权限获取及展现源码分析原创 2024-05-09 09:04:27 · 4794 阅读 · 2 评论 -
Android 异常开机半屏重启代码分析
备注:和屏幕初始化旋转有关系,把build_prop旋转90度,改为0度就不会有这个现象。原创 2024-05-08 15:06:29 · 4969 阅读 · 2 评论 -
Android 终端查看CPU信息源码分析
终端获取信息原创 2024-05-08 14:53:46 · 4836 阅读 · 0 评论 -
Android 启动提示Android 正在升级...提示源码分析
正常情况下烧录的新机会有这个提示,因为系统启动时候要对系统APP做DexOpt优化,流程如下:进入performBootDexOpt函数:提示框代码如下:而提示框的Tile和Msg如下:原创 2024-05-08 11:33:01 · 4886 阅读 · 1 评论 -
Android 开机启动扫描SD卡apk流程源码分析
胜利的果实:行09825 scanPackageLI,走到这里就和扫描系统盘的apk一样的流程了。原创 2024-05-08 09:56:19 · 5059 阅读 · 0 评论 -
Android 按键消息流程源码分析
InputDispatcher类是负责把键盘消息分发给当前激活的Activity窗口的,而InputReader类则是通过EventHub类来实现读取键盘事件的,InputReader实列mReader就是通过这里的InputReaderThread线程实列mReaderThread来读取键盘事件的,而InputDispatcher实例mDispatcher则是通过这里的InputDispatcherThread线程实例mDisptacherThread来分发键盘消息的;到这里,相关的组件都已经被创建了。原创 2024-05-08 09:40:51 · 5733 阅读 · 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 · 5749 阅读 · 12 评论 -
Android Dalvik虚拟机的启动过程源码分析
从前面的调用过程可以知道,参数array指向的是全局变量gRegJNI所描述的一个JNI方法注册函数表,其中,每一个表项都用一个RegJNIRec对象来描述,而每一个RegJNIRec对象都有一个成员变量mProc,指向一个JNI方法注册函数。这一步执行完成之后,Dalvik虚拟机的创建和初始化工作就完成了,回到前面,即AndroidRuntime类的成员函数start中,接下来就会调用AndroidRuntime类的另外一个成员函数startReg来注册Android核心类的JNI方法。原创 2024-05-07 09:13:26 · 5470 阅读 · 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 · 6496 阅读 · 5 评论 -
Android build.prop生成过程源码分析
Android的build.prop文件是在Android编译时刻收集的各种property【LCD density/语言/编译时间, etc.】;通过build.prop生成过程的分析,可知哪里可以修改原有的属性或加入自己定义属性:1,2,3都可以,不过个人建议还是用2、3方式,这样更好定制自己的产品;2、Makefile中直接把$(TARGET_DEVICE_DIR)/system.prop的内容追加到build.prop中【上述194行】;在第一页的代码片段中的209行又是一个很久意思的脚本文件;原创 2024-05-06 15:33:36 · 5137 阅读 · 0 评论 -
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 · 5890 阅读 · 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 · 6205 阅读 · 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 · 5984 阅读 · 3 评论 -
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 · 5306 阅读 · 1 评论 -
Android 开机动画源码分析
Android开机动画有好几个,这里只介绍原创 2014-09-14 17:35:58 · 5285 阅读 · 1 评论 -
开机Logo源码分析
drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个文件,make clean把这个文件夹的相关.c、.o删除,再make -j32 kernel.img重新编译!在编译之前先执行make rk3188_OK1000_defconfig生成相应的配置文件.config,文件在kern原创 2014-09-16 12:27:54 · 5536 阅读 · 1 评论 -
Android系统apk商城下载安装及安装认证源码分析
最终调用函数:打印日志,看看安装轨迹:代码流程如下:行05729调用来这里了:发送MCS_BOUND:进入startCopy:调用handleReturnCode:进入processPendingInstall:进入installPackageLI,其中包含代码片段如下:进入installNewPackageLI函数:进入scanPackageLI重载函数:原创 2024-04-29 15:04:58 · 4970 阅读 · 1 评论 -
从Kernel启动到Android系统整个过程源码分析
当然arc/arm/boot/compress下面也有这个文件,这个文件和上面的文件略有不同,当要生成压缩的内核时zImage时,启动的是后者,后者与前者不同的时,它前面的代码是做自解压的,后面的代码都相同。我们这里这分析arc/arm/kernel下面的head.S文件。看到上面代码run_init_process(“/etc/init”)很熟悉了吧(如果不熟悉的话,就赶紧去研究下Android frameworks层的代码哦),启动第一个init进程,进入Android世界…原创 2024-04-29 09:22:30 · 5062 阅读 · 2 评论