Android 底层开发例子一

伟研科技 S5PV210 开发板实验一 Android底层开发Led控制实验
一、代码讲解
1、 编写HAL层代码
一般来说HAL moudle需要涉及的是三个关键结构体:
struct hw_module_t;
struct hw_module_methods_t;
struct hw_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/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.aidl
package mokoid.hardware;

interface ILedService
{
boolean setOn(int led);
boolean setOff(int led);
}
系统的aidl工具会将ILedService.aidl生成ILedService.java文件,实现IledService


SystemServer (属于APP层)文件:
/apps/LedTest/src/com/weiyan/LedTest/LedSystemServer.java




二、APP 测试程序
文件:weiyan/apps/LedTest/src/com/weiyan/LedTest/LedTest.java

加载方法
1、把光盘提供的weiyan.tar.gz解压到/opt/ android_froyo_smdk
$ cd /opt/ android_froyo_smdk
$ tar -jxvf weiyan.tar.bz2
2、修改build/core/config.mk文件防止编译找不到led.h头文件
$cd /opt/ android_fsroyo_smdk
$gedit build/core/config.mk
找到SRC_HEADERS := \
$(TOPDIR)system/core/include \
在后面加入
$(TOPDIR)weiyan/hardware/modules/include




3、编译工程
$ source /opt/android_froyo_smdk/build/envsetup.sh
$ export TARGET_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_froyo_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.so
/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、为了android桌面能显示我们的LedClient.apk, LedTest.apk程序,把weiyan/frameworks/base/service/com.weiyan.server.xml放到android的
system/etc/permissions目录下
5、加载led驱动模块
把leds.ko复制到android 的system目录下,执行
#insmod leds.ko
#chmod 666 /dev/leds

6、运行LedClient.apk, LedTest.apk

更多相关文章

  1. Android 文件保存与读取
  2. 技巧: 如何安装apk文件在android仿真器中
  3. Android 根文件系统分析(1)
  4. [android] 保存文件到手机内存
  5. Android 将APK文件安装到AVD中并分析其界面结构
  6. 移动开发:fb的-app.xml文件
  7. Android源代码下载
  8. 2018-10-11【Android代码重构使用技巧】
  9. android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnec

随机推荐

  1. Android API中文文档EditText
  2. Android开发经验小知识点
  3. android component包含的内容
  4. Android API中文文档ImageView
  5. android:maxLines与android:ellipsize冲
  6. EditText inputType
  7. Android中MaterialDesign使用 (四)Coordi
  8. Android(安卓)系统字体规范与应用探索
  9. Android(安卓)中的ellipsize
  10. Android4.4系统源代码百度网盘下载