
深入理解Android卷I
星眸之心
业余时间,决定一个人的成就。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
笔记1--Android系统四层
Android系统大体可分为四层,从下往上依次是:Linux内核层:包含了Linux内核和一些驱动模块(比如USB驱动、Camera驱动、蓝牙驱动等)。目前Android2.2(代号为Froyo)基于Linux内核2.6版本。Libraries层:这一层提供动态库(也叫共享库)、Android运行时库、Dalvik虚拟机等。从编程语言角度来说,这一层大部分都是用C或C++写的,所以原创 2017-04-28 20:04:20 · 407 阅读 · 0 评论 -
笔记二--Android的编译
Android的编译有自己的一套规则,主要利用的是mk文件。网上有太多关于它的解说了,这里不再赘述,只简单地介绍其编译工序:进入源码目录(以笔者的开发环境为例,也就是cd/develop/download_froyo):执行.build/envsetup.sh,这个脚本用来设置Android的编译环境。执行choosecombo命令,这个命令用来选择编译目标(如目标硬件平台原创 2017-04-28 20:43:40 · 957 阅读 · 0 评论 -
笔记三---jni库的加载
static {System.loadLibrary("stbmonitor_jni");native_init();//调用native_init函数}在静态代码块内通过System.loadLibrary加载。加载JNI库前面说过,如果Java要调用native函数,就必须通过一个位于JNI层的动态库来实现。顾名思义,动态库就是运行时加载的库,那么在什么原创 2017-04-28 20:49:40 · 610 阅读 · 0 评论 -
JNIEnv解析
1.关于JNIEnv和JavaVM JNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立。JavaVM是虚拟机在JNI层的代表,在一个虚拟机进程中只有一个JavaVM,因此该进程的所有线程都可以使用这个JavaVM。当后台线程需要调用JNI native时,在native库中使用全局变量保存JavaVM尤为重要,这样使得后台线程能通过JavaVM获得JNIEnv。na转载 2017-04-28 21:12:07 · 725 阅读 · 0 评论