手机开发培训 05_Android的JAVA虚拟机和JAVA环境.pdf
《手机开发培训 05_Android的JAVA虚拟机和JAVA环境.pdf》由会员分享,可在线阅读,更多相关《手机开发培训 05_Android的JAVA虚拟机和JAVA环境.pdf(31页珍藏版)》请在汇文网上搜索。
1、 Android的JAVA虚拟机和JAVA环境 第一部分 Dalvik虚拟机 第二部分 Android的JAVA程序环境 第三部分 JNI的使用 第四部分系统服务的JAVA部分 Android的JAVA虚拟机和JAVA环境 第一部分 Dalvik虚拟机 Dalvik是Android程序的虚拟机,它执行 (.dex)的Dalvik可执行文件,该格式文件针对小内 存使用做了 优化。同时虚拟机是基于寄存器的,所有 的类都经由JAVA编译器编译,然后通过SDK中 的 dx 工具转化成.dex格式由虚拟机执行。 Dalvik虚拟机依赖于linux内核的一些功能,比如 线程机制和底层内存管理机制。 第一部
2、分 Dalvik虚拟机 Dalvik虚拟机的代码路径:dalvik/,其中包含了 目标机和主机的内容。 vm目录中的内容是虚拟机的实现,由本地代码实 现(包含了部分的汇编代码),其编译的结果为共享库 libdvm.co。 libcore目录是一个提供了对基础JAVA实现支持的 代码目录,包含了C语言代码和JAVA代码,编译的 结果为JAVA的包core.jar。 第一部分 Dalvik虚拟机 nativehelper库是一个工具库,用于注册JAVA本地 调用的函数,在其他的代码中需要使用JNI从本地层次 向JAVA层次提供功能的时 ,需要使用 个库。 nativehelper库的代码路径为:
3、dalvik/libnativehelper。 库libjavacore.a, 成 库libnativehelper.so。 nativehelper个库的 文件的路径为: libnativehelper/include/nativehelper/jni.h:基于JNI标 的 文件 libnativehelper/include/nativehelper/JNIHelp.h:提供 JNI注册功能的 文件 第二部分 Android的JAVA程序环境 Android的API的层次结 : JAVA标 API JAVA API(javax包) 和 提供的java类库(org包) Android的 包
4、比标 JAVA,Android中的JAVA API 同的API功能, 些API 是一个 。 第二部分 Android的JAVA程序环境 Android中的JAVA的库主要为android包 其 包,其中核 的包的目录为: frameworks/base/core/java/ 其中, 个 目录和文件是 JAVA包 的 系 的,如文件: android/app/Activity.java 它android.app包中的类Activity。 第二部分 Android的JAVA程序环境 Android中JAVA类的API的文件包含在 frameworks/base/api/目录的current.xml
5、 文件。 主要使用的标: currency1注中“hide的时 ,内容 fifl了, 个内容然现在JAVA的代 码中, 是 为 于Android的系统API。 第二部分 Android的JAVA程序环境 public class Activity extends ContextThemeWrapper / 定义Activity类 implements LayoutInflater.Factory, Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener, ComponentCallbacks public Activity
6、() +sInstanceCount; / . . 省略 android.app.Activity类的: 第二部分 Android的JAVA程序环境 第三部分 JNI的使用 JNI是Java Native Interface的“,中文为 JAVA本地调用。从Java 1.1”,Java Native Interface (JNI)标 成为java的一部分,它 Java代码和其他语言“的代码行 。JNI 是本地 编程 。它使在 Java 虚拟机 (VM) 内部行的 Java 代码能用其它编程语言(如 CC+ 和汇 编语言)编“的用程序和库行 。 在Android中提供JNI的式, JAVA程序
7、可调用C语言的程序。 第三部分 JNI的使用 VvoidJAVA的无返回值 Ljobject JAVA对象 Djdouble(IEEE 754,64位 ) JAVA双精度浮(double) Fjfloat(IEEE 754,32位) JAVA单精度浮点(float) Jjlong(64位有符号)JAVA长整型(long) Ijint(32位有符号)JAVA整型(int) Sjshort(16位有符号)JAVA短整型(shout) Cjchar(16位无符号)JAVA字符(char) Bjbyte(8位有符号)JAVA字节(byte) Zjboolean(8位无符号)JAVA布尔类型(boole
8、an) 对应的字母JNI的类型JAVA的类型 第三部分 Android中的JNI C/C+本地库 JAVA JNI JAVA用程序 Android 系统API JAVA类 ( 本地 ) 在Android中提供JNI的 方式,让JAVA程序可以 调用C语言的程序。很多 Android中JAVA的类都 具有native的接口,这些 nantive接口就是由本地实 现,然后注册到系统中的 。 3.1 JNI的实现式 在Android中,主要的JNI的代码在以下的路 径中:frameworks/base/core/jni/ 这个路径中的内容将被编译成为 库,libandroid_runtime.so,
9、这就是一个普通的动态 库,被放置在目标系统的/system/lib目录中。 除此之外,Android还包含了其他的几个JNI 的库,例如媒体部分的JNI在目录frameworks/base/ media/jni/中,被编译成为库libmedia_jni.so。 3.1 JNI的实现式 JNI中各个文件的实际上就是C+的普通源文件, 其命名一般 对应 的JAVA类有对应 系。这 系是 上的 , 是 的。 在Android中实现的JNI库, 要 接动态库 libnativehelper.so。 Android中 用JNI主要有 方式: 1. 在 实现, 接JAVA 本地 2. 在应用程序的Apk包
10、中实现 android.util.Log类的 : static JNINativeMethod gMethods = isLoggable, (Ljava/lang/String;I)Z, (void*) android_util_Log_isLoggable , println,(ILjava/lang/String;Ljava/lang/String;)I, (void*) android_util_Log_println , ; public final class Log public static native boolean isLoggable(String tag, int l
11、evel); public static native int println(int priority, String tag, String msg); android_util_Log.cpp中的 : 3.2 在层实现JNI 注册JNI的 : int register_android_util_Log(JNIEnv* env) jclass clazz = env-FindClass(android/util/Log); / 省略其他 的内容 levels.verbose= env-GetStaticIntField(clazz, env-GetStaticFieldID(clazz,
12、VERBOSE, I); levels.debug = env-GetStaticIntField(clazz, env-GetStaticFieldID(clazz, DEBUG, I); levels.info = env-GetStaticIntField(clazz, env-GetStaticFieldID(clazz, INFO, I); levels.warn = env-GetStaticIntField(clazz, env-GetStaticFieldID(clazz, WARN, I); levels.error = env-GetStaticIntField(clazz
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
17 积分
下载 | 加入VIP,下载共享资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机开发培训 05_Android的JAVA虚拟机和JAVA环境 手机 开发 培训 05 _Android JAVA 虚拟机 环境