Android系统源码分析
文章平均质量分 88
主要分析Android系统源代码。
Android系统初始化流程;
Android各进程间的通信;
从底层(c/c++)到framework(java)各个组件的实现;
liranke
似水流年是一个人所有的一切,只有这个东西,才真正归你所有。其余的一切,都是片刻的欢娱和不幸,转眼间就已跑到那似水流年里去了。
展开
-
Android源码分析-PackageManagerService(PMS)源码分析(三)- queryIntentActivities函数来查找activity
queryIntentActivities函数的作用:在Android应用程序开发中,用startActivity可以开启另外一个Activity或应用。startActivity函数必须包含Intent参数,这个参数用来指定具体要打开的组件。原创 2013-10-30 15:43:08 · 4733 阅读 · 0 评论 -
Android源码分析-PackageManagerService(PMS)源码分析(二)- 利用PackageParser进行package的解析
PackageParser用于解析一个apk文件。对于一个apk文件来说,系统是如何进行解析的?本节分析apk解析相关的代码。在上一节中,分析了PackageManagerService的初始化流程。其中,PMS的scanDirLI是关键方法,它用来扫描给定参数dir目录下的apk文件,并通过调用scanPackageLI来进行解析。在scanPackageLI方法中,创建了解析器,正是通过这个解析器,实现了apk的解析。原创 2013-10-29 17:00:58 · 1746 阅读 · 0 评论 -
Android源码分析-PackageManagerService(PMS)源码分析(一)PMS的初始化以及PackageManager的使用
PackageManagerService(简称PMS),顾名思义,用于进行Android包的管理。利用PackageManagerService服务,可以查询应用程序等信息,以及安装包(package)信息,以及该应用activity,service,权限等组件的信息。PackageManagerService是Android系统中的一个系统服务。Android系统中,提供了PackageManager类来对外(应用程序)提供API接口,对内(Android系统)与PMS进行IPC通信,最终通过PMS原创 2013-10-28 15:54:20 · 2819 阅读 · 0 评论 -
Android源码分析-pm命令的实现,列出包名pm list package,列出系统库pm list libraries
pm,即package manager, 还记得Android Framework层的PackageManager吗?利用PackageManager,可以访问到PackageManagerService。原创 2022-04-22 20:41:25 · 4956 阅读 · 2 评论 -
Android源码分析-am命令的实现
在Android系统中,可以用am命令来启动一个组件。例如,启动相机的命令如下:# am start -n com.android.camera/com.android.camera.Camera。而且,这个命令最终会通过ActivityManagerService来实现。原创 2022-04-18 20:33:11 · 3105 阅读 · 0 评论 -
Android源码分析-ActivityManagerService(AMS)源码分析
ActivityManagerService(简称AMS)是Android系统中最重要的一个服务,负责管理Android系统中的四大组件以及他们的生命周期;同时,还提供应用进程管理,包括Home进程;还提供包括电池状态查询的API接口。ActivityManagerService(AMS)系统架构以及相关核心组件:在Android系统中,许多服务都是采用C/S架构。AMS对应的Client端组件是ActivityManagerProxy。原创 2010-03-30 22:34:00 · 4031 阅读 · 0 评论 -
Android源码分析-logcat源码分析,以及main,radio,system等log文件,包括select的多路复用的运用
logcat用于输出日志到屏幕上,也可以将日志重定向到文件中。本篇主要分析logcat源码,顺便说一下logcat的典型用法。logcat本身是一个可执行程序,需要依赖于adb命令执行,或者说,需要在adb shell命令行运行。原创 2022-03-30 08:00:00 · 2816 阅读 · 0 评论 -
startActivity在Activity和Service中的不同实现,以及“Calling startActivity() from outside of an Activity”错误解决
在Android应用开发过程中,通过调用startActivity可以启动另外一个Activity,参数必须包含Intent。startActivity源码分析。Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag问题解决原创 2022-03-14 19:19:32 · 3811 阅读 · 0 评论 -
Android开发-Activity中“android:exported“属性的作用,以及“Permission Denial: starting Intent“错误解决
Activity中"android:exported"属性设置为true,意味着允许让外部组件启动这个Activity;反之,则不允许让外部组件启动这个Activity; java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] ,not exported from uid 10原创 2022-03-12 08:19:12 · 16153 阅读 · 1 评论 -
Android系统的心脏-Zygote进程如何fork一个新的应用进程
在Android系统中,所有的应用程序进程都是有Zygote进程创建的。那么,到底是如何创建出来的呢?本节来分析一下这个创建流程。原创 2010-05-18 09:22:00 · 2253 阅读 · 0 评论 -
Android应用程序启动流程之从startActivity开始
Android系统中,应用程序是由框架创建的。通过startAcitivty函数可以启动一个应用程序,那么,startActivity到底做了些什么,以至于这样一个简单的几行代码就能调用起一个应用程序。本节分析startActivity的执行流程。原创 2010-04-04 00:36:00 · 5931 阅读 · 0 评论 -
Android系统中震动器服务-VibratorService的分析,从App层到硬件抽象层(HAL层)
VibratorService是Android系统中的一个服务,作用是设置手机震动。Vibrator,即震动器,或者称之为马达。在真实的设备中,对应有一个小马达,是安装在手机里的硬件设备。Android系统提供了硬件抽象层HAL,来让底层驱动开发者适配,这样,整个Android系统的框架层不需要做变更。原创 2022-02-23 10:55:25 · 4414 阅读 · 0 评论 -
Android系统中闹钟服务-AlarmManagerService的分析
AlarmManagerService是Android系统框架层的一个服务,提供闹钟相关的功能。和其它许多服务一样,它也是通过Binder IPC机制为Client(可以看作是Android应用层序)提供服务的。原创 2022-02-21 12:48:57 · 2919 阅读 · 1 评论 -
Android系统源码分析-从init进程开始
Android系统底层用的是Linux,和Linux一样,init进程是Linux系统用户进程的第一个进程,它是由Linux内核(kenerl)启动的。其它所有的用户进程都是init进程的子进程。我们从init进程来分析Android系统的启动流程。原创 2009-10-23 19:57:00 · 7973 阅读 · 0 评论 -
Android系统源码分析-进程间通信机制binder(四):从Native层到Driver层
本篇继续分析Android Binder机制相关源代码,主要从Native(c++)层到driver层的相关组件已经代码调用流程。原创 2009-10-26 00:25:00 · 8036 阅读 · 0 评论 -
Android系统源码分析-进程间通信机制binder(三):从framework层到Native层
Android Binder机制既提供IPC通信,又具有RPC功能,这样,对应上层应用程序提供了非常友好的API调用接口。实际上,为了支持支撑这一机制,从Android Framework到Native再到Binder Driver,是一个非常复杂的业务支撑系统。本节主要介绍在这个过程中,Android系统中,Binder在框架层的相关组件。原创 2009-10-26 00:23:00 · 7618 阅读 · 0 评论 -
Android系统源码分析-进程间通信机制binder(二):binder内存映射
Binder在Android系统中用于进程间通讯。为了实现用户空间和内核空间的数据交换,Android Binder机制采用了内存映射的方式,具体映射到/dev/binder这个设备驱动文件节点上。原创 2009-10-24 15:59:00 · 8300 阅读 · 0 评论 -
Linux下的Android + Eclipse环境搭建
本文描述了如何在Linux ubuntu 8.10下搭建Android开发环境.步骤:1. 安装虚拟光驱daemon400.exe2. 在windows XP下用虚拟光驱安装ubuntu 8.10, iso文件为:ubuntu-8.10-beta-desktop-i386.iso3. 用dpkg命令打patch:1) 进入ubuntu原创 2009-10-16 07:41:00 · 3218 阅读 · 0 评论 -
“make: *** [out/target/common/obj/PACKAGING/checkapi-current-timestamp] 错误 38“ 问题解决
在进行Android 源码编译的时候,出现"make: *** [out/target/common/obj/PACKAGING/checkapi-current-timestamp] 错误 38"信息,解决方法如下:make update-apimake 成功。原创 2012-07-28 11:25:44 · 10420 阅读 · 0 评论 -
Android音量调节的实现(RingtoneManager和RingerVolumePreference)
Android音量调节的实现,分两种情况说明,一种是在settings的音量设置界面,按下侧键进行调节;另一种是在非settings界面,按下侧键进行音量调节。这两种调节方式的实现不一样,分别操作的是两个不同的音量SeekBar。下面,分别进行分析:一. 在se原创 2011-08-12 20:54:21 · 20912 阅读 · 9 评论 -
Andoid源码编译-Android源码编译完成后的代码目录结构
Android源码是开源的,用户可以下载下来自行编译,下面是一份编译后的代码结构:原创 2009-10-23 07:56:00 · 2439 阅读 · 0 评论 -
Eclipse中关联android sdk源码
为了在项目中随时可以查看Android源码,往往需要将Android源码与eclipse进行关联,这里,以android2.3的android_gingerbread_javasrc1.zip为例子,来说明“在eclipse中,如何关联android sdk的源码”原创 2015-07-27 14:18:16 · 1624 阅读 · 0 评论 -
Android中的服务(service)详解(一)
在Android系统中,到处可见service(服务)这个单词,从功能上来讲,它意味着没有UI界面,作为一个后台进程,执行一些特定的任务。在Android应用开发过程中,也免不了需要开发一些service来完成一些功能,而这种应用层的service(继承看自service)只是整个Android service这一概念的一部分而已,本系列文章将从Android系统平台的角度,详细剖析Android中的“服务”这一概念,以便使大家全面了解service。原创 2015-01-18 15:39:38 · 8631 阅读 · 0 评论 -
Android源码--介绍一个Android源码在线阅读网站
经常查看和阅读Android源码,不仅可以更深入的理解Android系统,也为我们解决问题,开发应用程序提供更大的帮助,拓宽思路。由于种种原因,google的官网通常访问不了,需要翻墙才能访问。今天介绍一个Android在线阅读网站。这个网站就是“ANDROID社区”,网址:https://www.androidos.net.cn/sourcecode原创 2010-04-28 11:32:00 · 1330 阅读 · 0 评论 -
Android 中反编译APK的方法
一. 方法一: 工具下载:需用到dex2jar和JD-GUI这2个工具dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI下载地址: windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip Linu原创 2011-11-01 18:55:39 · 2040 阅读 · 0 评论 -
zergRush源码
zergRush用于对Android手机进行root提权, 适用于android 2.2/2.3版本,代码可以从下面这个网址获得: https://github.com/revolutionary/zergRush/downloads这里,将zergRush.c的代码发布出来,仅供参考:原创 2011-12-22 16:29:33 · 3117 阅读 · 0 评论 -
android中编译资源文件的相关问题
android中编译资源文件的相关问题:1. 如何重新编译应用程序的资源文件? 当修改了资源相关文件(如main.xml)后,需要先编译资源文件,再用mm编译应用程序。为了编译资源文件,需要先将资源删除掉,例如: rm ../../../out/targe原创 2011-09-22 09:57:37 · 5312 阅读 · 1 评论 -
android中binder的初始化
binder是android独有的一种IPC机制,它是在/system/bin/servicemanager进程中完成初始化的,它的父进程是init. 1. 代码: frameworks\base\cmds\servicemanager\,这个目录下,有service_manager.c,binder.c。 (1) 在service_manager.c中,有main函原创 2013-08-05 11:44:10 · 8705 阅读 · 0 评论 -
Android源码--Android设计模式之Abstract Factory
本节举例说明Abstract Factory在Android源码中的体现。abstract factory是对象的创建型模式。这种设计模式在Android中运用相当广泛。现仅仅以Android平台JVM的DatagramSocket的实现为例来介绍之。DatagramSocket是一个实现了UDP socket的类。原创 2010-05-09 12:43:00 · 5706 阅读 · 0 评论 -
strcpy函数在android中的实现
一. 头文件声明:string.h: #ifndef _STRING_H_#define _STRING_H_#include #include #include extern char* strcpy(char *, const char *);extern char* strcat(char *, const char *);......#endif /* _STRING_原创 2010-05-23 08:19:00 · 2968 阅读 · 0 评论 -
Android系统源码分析-进程间通信机制binder(一):守护进程servicemanager
Android系统是基于Linux系统的,从进程的角度来说,Android继承了Linux的进程间通信机制,例如共享内存,信号量,管道,socket等,除此之外,Android系统的最大特点之一就是提供了独有的进程间通信机制,即binder机制。而servicemanager进程正是支持binder机制的基石。原创 2009-10-23 20:37:00 · 8686 阅读 · 1 评论 -
Android 启动过程
Android 初始化流程,从init.c开始说明: 我已经以word文档的格式将这部分内容上传到我我的资源列表中,感兴趣的朋友可以去下载:下载地址:http://liranke.download.csdn.net/ Init.c 1.1 Main functionInit is the first process after kernel原创 2009-10-18 21:09:00 · 4435 阅读 · 0 评论 -
Android系统中WindowManagerService的初始化流程
WindowManagerService,即窗口管理服务,简称WMS。顾名思义,主要用于进行窗口的管理,通过WMS的数据成员就可以看出来;除了管理窗口外,WMS还要对事件进行管理和分发。原创 2010-03-31 08:32:00 · 21454 阅读 · 1 评论 -
Android设计模式--Android源码中的设计模式之Singleton,ActivityManagerService,WindowManagerService
Android Framework层提供了大量的组件,例如,HardwareService,PowerManagerService,WindowManagerService...,所有的app都可以调用这些组件提供的接口,从而完成相应的功能。这些组件都是以单例模式(Singleton)存在于系统中。本节就来看看这种单例模式在Android Framework源码中的具体运用。原创 2010-05-08 12:13:00 · 8183 阅读 · 0 评论 -
android 多媒体框架中mediaplay与opencore的衔接调用过程
本文从代码的角度来分析Android多媒体框架中mediaplay是如何调用opencore的。原创 2011-01-27 17:37:00 · 8107 阅读 · 4 评论 -
Android源码下载repo sync脚本
在进行Android源码下载时,经常会断掉,这时,就得重新输入repo sync,那么,有没有一种方法在断网时自动进行repo sync呢? 在Linux下,还是用脚本来解决这个问题吧.在要下载源码的目录下,新建一个文件(因为内容特别少,直接用vi编辑就可以了),例如down.sh,内容如下:#!/bin/shrepo syncwhile [ $? -ne 0 ]dorep原创 2012-08-02 19:37:22 · 12160 阅读 · 1 评论 -
Android system_server进程的初始化过程(包含jvm的初始化)
在Android系统中,如果用ps来查看进程列表的话,会发现有一个进程是zygote,它的父进程是init, 而且,它是所有应用的父进程,包括system_server。事实上, zygote正是我们所说的JVM。这个进程是通过app_process的方式启动的,而且是在init.rc中指定的,具体如下: service zygote /system/bin/app_process -Xz原创 2013-08-05 15:13:12 · 4421 阅读 · 0 评论 -
用git下载Android的某个应用程序
android应用程序在git上的位置:https://github.com/android,打开上面的网页,在“search"中输入要下载的应用程序名,找到它的git位置,就可以用git下载了,例如,Settings的下载:输入Settings, 找到"android/platform_packages_apps_settings",点击后,就可以看到它的git地址了: https://原创 2013-11-04 09:49:04 · 1503 阅读 · 0 评论 -
Android源码之“应用程序界面“分析一( 从settings开始)
Android源码之应用程序界面分析一(从settings开始):一。 预热:当我们点击"设置” ->“应用程序”中时,会出现应用程序的列表,而且,有“所有应用”,“已下载”如,“正在运行”等Tab,那么,这个界面是如何实现的呢,那就要看settings应用的相关源码了。二。源码分析:1。入口:ManageApplications.java, 这个类就是上面功能的实现类原创 2013-12-31 15:32:12 · 5098 阅读 · 1 评论 -
android root权限相关bin程序rageagainsttheca
android root权限相关bin程序rageagainsttheca源码原创 2012-12-10 01:00:26 · 1566 阅读 · 0 评论