Android应用程序安装过程源代码分析

Android应用程序安装过程源代码分析

ID:41008644

大小:84.03 KB

页数:19页

时间:2019-08-13

Android应用程序安装过程源代码分析_第1页
Android应用程序安装过程源代码分析_第2页
Android应用程序安装过程源代码分析_第3页
Android应用程序安装过程源代码分析_第4页
Android应用程序安装过程源代码分析_第5页
资源描述:

《Android应用程序安装过程源代码分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程,本文将详细分析这个过程。     应用程序管理服务PackageManagerService安装应用程序的过程,其实就是解析析应用程序配置文件AndroidManifest.xml的过程,并从里面得到得到应用程序的相关信息,例如得到应用程序的组件Activity、Service、BroadcastReceiver和ContentProv

2、ider等信息,有了这些信息后,通过ActivityManagerService这个服务,我们就可以在系统中正常地使用这些应用程序了。     应用程序管理服务PackageManagerService是系统启动的时候由SystemServer组件启动的,启后它就会执行应用程序安装的过程,因此,本文将从SystemServer启动PackageManagerService服务的过程开始分析系统中的应用程序安装的过程。     应用程序管理服务PackageManagerService从启动到安装应用程序的过程如下图所示:     下面我们具体分析每一个步骤。     Step1.Syst

3、emServer.main     这个函数定义在frameworks/base/services/java/com/android/server/SystemServer.java文件中:viewplain1.public class SystemServer  2.{  3.    ......  4.  5.    native public static void init1(String[] args);  6.  7.    ......  8.  9.    public static void main(String[] args) {  10.        .....

4、.  11.  12.        init1(args);  13.  14.        ......  15.    }  16.  17.    ......  18.}       SystemServer组件是由Zygote进程负责启动的,启动的时候就会调用它的main函数,这个函数主要调用了JNI方法init1来做一些系统初始化的工作。     Step2.SystemServer.init1     这个函数是一个JNI方法,实现在 frameworks/base/services/jni/com_android_server_SystemServer.cpp文件中:

5、viewplain1.namespace android {  2.  3.extern "C" int system_init();  4.  5.static void android_server_SystemServer_init1(JNIEnv* env, jobject clazz)  6.{  7.    system_init();  8.}  9.  10./* 11. * JNI registration. 12. */  13.static JNINativeMethod gMethods[] = {  14.    /* name, signature, func

6、Ptr */  15.    { "init1", "([Ljava/lang/String;)V", (void*) android_server_SystemServer_init1 },  16.};  1.  2.int register_android_server_SystemServer(JNIEnv* env)  3.{  4.    return jniRegisterNativeMethods(env, "com/android/server/SystemServer",  5.            gMethods, NELEM(gMethods));  6.} 

7、 7.  8.}; // namespace android       这个函数很简单,只是调用了system_init函数来进一步执行操作。     Step3. libsystem_server.system_init     函数system_init实现在libsystem_server库中,源代码位于frameworks/base/cmds/system_server/library/system_init.cpp文件中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。