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为驱动硬件抽象层添加服务

转载于:https://blog.51cto.com/haidragon/2409664

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值