欢迎来到天天文库
浏览记录
ID:22678247
大小:290.13 KB
页数:10页
时间:2018-10-30
《android底层开发》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、代码讲解 1、编写HAL层代码 一般来说HALmoudle需要涉及的是三个关键结构体: structhw_module_t; structhw_module_methods_t; structhw_device_t; 下面结合代码说明这3个结构的用法 文件:/hardware/modules/include/weiyan/led.h 文件:led.c 2.JNI层文件:/frameworks/base/service/com_mokoid_server_LedService.cpp 3.Framework层的service,文件:/frameworks
2、/base/service/java/com/weiyan/server 4.APP测试程序(属于APP层) APP层两种调用模式 (1)Android的app可以直接通过service调用.so格式的jni (2)经过Manager调用service Manager(属于Framework层) 因为LedService和LedManager在不同的进程,所以要考虑到进程通讯的问题。Manager通过增加一个aidl文件来描述通讯接口 文件:weiyan/frameworks/base/core/java/weiyan/hardware/ILedService.
3、aidl packagemokoid.hardware; interfaceILedService { booleansetOn(intled); booleansetOff(intled); } 系统的aidl工具会将ILedService.aidl生成ILedService.java文件,实现IledService SystemServer(属于APP层)文件: /apps/LedTest/src/com/weiyan/LedTest/LedSystemServer.java 二、APP测试程序 文件:weiyan/apps/LedTest/src/
4、com/weiyan/LedTest/LedTest.java 加载方法 1、把光盘提供的weiyan.tar.gz解压到/opt/android_froyo_smdk $cd/opt/android_froyo_smdk $tar-jxvfweiyan.tar.bz2 2、修改build/core/config.mk文件防止编译找不到led.h头文件 $cd/opt/android_fsroyo_smdk $geditbuild/core/config.mk 找到SRC_HEADERS:= $(TOPDIR)system/core/include 在后面
5、加入 $(TOPDIR)weiyan/hardware/modules/include 3、编译工程 $source/opt/android_froyo_smdk/build/envsetup.sh $exportTARGET_PRODUCT=sec_smdkv210 $mmm/opt/android_froyo_smdk/weiyan编译成功后会如下路径生成apk文件,库文件,jar包等/opt/android_froyo_smdk/out/target/product/smdkv210/system/app/LedClient.apk/opt/android_f
6、royo_smdk/out/target/product/smdkv210/system/app/LedTest.apk/opt/android_froyo_smdk/out/target/product/smdkv210/system/framework/ledctl.jar/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/hw/led.smdkv210.so/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/libled.s
7、o/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/libmokoid_runtime.so 把LedClient.apk,LedTest.apk放到android的system/app目录,把ledctl.jar放到system/framework目录,把led.smdkv210.so放到system/lib/hw目录,把ibled.so, libmokoid_runtime.so放到system/lib目录下 4、为了
此文档下载收益归作者所有