NEXUS 5为驱动硬件抽象层添加服务

接上面的文章,这篇是为抽象层添加服务,同样是罗老师的代码。
先定义硬件访问服务接口,如图所示。
NEXUS 5为驱动硬件抽象层添加服务
添加配置项。
NEXUS 5为驱动硬件抽象层添加服务
NEXUS 5为驱动硬件抽象层添加服务

初始化环境。

source build/envsetup.sh
export PATH=/home/haidragon/Desktop/java-7-openjdk-amd64/bin/:$PATH
lunch 

然后编译服务接口。

mmm ./frameworks/base/

NEXUS 5为驱动硬件抽象层添加服务
NEXUS 5为驱动硬件抽象层添加服务
查看framework.jar
NEXUS 5为驱动硬件抽象层添加服务
实现硬件访问服务,这里路径不太一样但是我们大概看下就知道话哪里好。
NEXUS 5为驱动硬件抽象层添加服务
然而把他编译进去。

mmm ./frameworks/base/services/core/

NEXUS 5为驱动硬件抽象层添加服务
NEXUS 5为驱动硬件抽象层添加服务
NEXUS 5为驱动硬件抽象层添加服务
但是最终是要打包到services.jar所有要再输入:

mmm ./frameworks/base/services/

NEXUS 5为驱动硬件抽象层添加服务
NEXUS 5为驱动硬件抽象层添加服务
现在实现硬件访问服务的JNI方法。
NEXUS 5为驱动硬件抽象层添加服务

修改onload.cpp
NEXUS 5为驱动硬件抽象层添加服务
修改配置
NEXUS 5为驱动硬件抽象层添加服务
编译:(一层层的编译吧 有android.mk目录的就不要偷懒)

mmm ./frameworks/base/services/core/jni/
mmm ./frameworks/base/services/core/
mmm ./frameworks/base/services/
mmm ./frameworks/base/

同样要修改源码前面加个A
NEXUS 5为驱动硬件抽象层添加服务
NEXUS 5为驱动硬件抽象层添加服务
检查
NEXUS 5为驱动硬件抽象层添加服务
最后是更新system.img

make snod

NEXUS 5为驱动硬件抽象层添加服务
刷入手机就行了,但是呢没法用,你用as开发sdk中是没有这个服务的,有俩种办法解决,第一种是自己写apk在源码下编译,这种是直接打包进system.img的。还一种是把编译的源码生成sdk,写项目用这个sdk。命令是make sdk。
这里服务是没有启动的,所以最后还差一步就是把服务new出来,罗老师是用的2版本的系统我这是3版本的系统没有那个文件,通过搜索还是有点线索。具体写到哪里可以自己尝试。也可以手动启动的,自己写个cpp程序的,也可以压根不写服务,但是不符合android 编译规范。其实主要还是没理解源码,应该如何添加自己慢慢看源码吧。这里主要为了熟悉下整个android从上到下的过程。

find . -name "*.java" | xargs -n50 grep "ServiceManager.addService"

NEXUS 5为驱动硬件抽象层添加服务

上一篇:php – 来自其他实体的注册表单中的FOSUserBundle属性


下一篇:什么是最新的星号Python星号AGI框架?