Android 各层调用的方式
所有的android的app启动都有三种深入启动的方式:
①app——Runtime Service——Lib
这种启动方式是:
Ⅰapp程序中启动application framework 层中Runtime Service
ⅡRuntime Service通过jni调用Libray层中的Native Binding
ⅢNative Binding通过动态加载的方式来调用HAL Library层的东西
ⅣHAL Library再调用Linux Kernel的东西 相应示意图如下:

②app——Runtime Service——Native Service——Lib
Ⅰapp调用application frame work 中的runtime service
Ⅱruntime service 通过jni机制来调用natvie service binding
Ⅲnative service binding 通过远程的IPC机制来调用native service
ⅣNative Service通过动态加载的方式来调用HAL Library层的东西
ⅤHAL Library再调用Linux Kernel的东西 相应的示意图如下:

③app——Runtime Service——Native Deamon——Lib
Ⅰapp调用application frame work 中的runtime service
Ⅱruntime service 通过jni机制来调用natvie service binding
Ⅲnative service binding 通过socket机制调用native deamon 进程
Ⅳnative deamon 进程通过动态加载的方式来调用HAL Library层的东西
ⅤHAL Library再调用Linux Kernel的东西 相应的示意图如下:

这就是app在android各层中调用理解三种形式。
Android 各层调用的方式的更多相关文章
- Unity3D调用android方法(非插件方式)
关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...
- Android JNI之C/C++层调用JAVA
转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5930032.html 从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 ...
- Android JNI开发之C/C++层调用JAVA
一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...
- Android NDK学习(四):C/C++层调用JAVA
一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...
- Android系统JNI的实现方式
Android系统JNI的实现方式 All rights reserved JNI(Java Native Interface)定义了一种Java代码调用C或者C++代码等其它代码的方式. 在A ...
- Android Hal层简要分析
Android Hal层简要分析 Android Hal层(即 Hardware Abstraction Layer)是Google开发的Android系统里上层应用对底层硬件操作屏蔽的一个软件层次, ...
- 在Android Native层中创建Java虚拟机实例
前言 Android应用中JNI代码,是作为本地方法运行的.而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数.例如,你需要用虚拟机实例来创建jstring和其他的Java对 ...
- Android native层动态库注射
1.简单介绍 本文解说在Android native层.root权限下.注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...
随机推荐
- ng animate
要在angular中加入动画必须引入angular.animate.js插件,然后就可以在module中引入ngAnimate模块.如: var module1 = angular.module('m ...
- hash 表 | | jzoj 1335 | | 脑残+手残 | | 集合的关系
给定两个集合A.B,集合内的任一元素x满足1 ≤ x ≤ 10^9,并且每个集合的元素个数不大于10^5.我们希望求出A.B之间的关系. 给定两个集合的描述,判断它们满足下列关系的哪一种:A是B的一个 ...
- Oracle归档模式和非归档模式
一 什么是Oracle归档模式? Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里.一般数据库至少要有2个联机重做日志 ...
- 操作系统win2003 x64的,安装OFFICE2003后,DCOM服务找不到 WORD应用程序服务
打开注册表,找到以下健值 HKEY_CLASSES_ROOT\AppID\{00020906-0000-0000-C000-000000000046} HKEY_CLASSES_ROOT\CLSID\ ...
- aa3
var geoCoordMap = { "海门":[121.15,31.89], "鄂尔多斯":[109.781327,39.608266], "招远 ...
- Reveal分析IOS界面,plist文件读取
Reveal分析IOS界面,需要得到app的 softwareVersionBundleId上传到iphone中 , 而IOS8的iTunesMetadata.plist (设备路径/var/mobi ...
- Groovy 转换JSON和生产JSON
Groovy 类和JSON之间的相互转换,主要在groovy.json包下面 1. JsonSlurper JsonSlurper 这个类用于转换JSON文本或从Groovy 数据结构中读取内容例如m ...
- XMLHttpRequest cannot load file:///E:/userdialog.html?_=1465888805734. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-reso
做前端写静态页面时,采用的是jq easyui框架 在ie与webkit总是加载的时候总是在loading... 而firefox却是正常加载的,总以为是代码写错了, 经过再三的检查以及百度查找,确认 ...
- mybatis多数据源配置
项目目录如下: 按照顺序配置吧 首先是配置config jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/a ...
- 好文推荐系列---------JS模板引擎
这篇文章写的很清晰,不再赘述,直接上链接:http://www.tuicool.com/articles/aiaqMn