調試了包括驅動,jni層,當然也熟悉了下應用層。
1. 驅動層包括修改:
device/eastaeon/aeon6735_65c_l/init.project.rc //去掉原來修改權限的語句
device/mediatek/mt6735/init.mt6735.rc
//修改權限,不然可以open不了
chmod 0777 /dev/ttyMT2
chown system system /dev/ttyMT2
chmod 0777 /dev/uart_rfid
kernel-3.10/arch/arm64/configs/aeon6735_65c_l_debug_defconfig //
//加入編
CONFIG_RUNBO_RFID=y
CONFIG_HKT_RFID=y
kernel-3.10/drivers/misc/mediatek/Kconfig.drivers //增加Kconfig, 在mtk平台,不加可能導致不會編譯
#Start [chenxw,2015-04-25]Add rfid driver.
menuconfig RUNBO_RFIDtristate "Runbo rfid driver"default y---help---Say Y here for supporting Runbo rfid.if RUNBO_RFIDconfig HKT_RFIDtristate "HKT rfid Driver"default yhelpThis is the pr9200 rfid driver.endif #End
kernel-3.10/drivers/misc/mediatek/Makefile.mt6735 //增加目錄下的Makefile
#Start [chenxw,2015-04-25]Add rfid driver.
obj-$(CONFIG_RUNBO_RFID) += rfid/#End
kernel-3.10/drivers/misc/mediatek/rfid/Makefile //添加在附件 :rfid_driver.rar
kernel-3.10/drivers/misc/mediatek/rfid/rfid.c
//添加在附件,只做上下電,讀取數據在uart驅動中做
2.JNI修改,有兩種方法:
1.
一種是在系統的加載的時候加入系統,這種是編入系統的
2.一種是生成SO文件,在APK調用的時候加載進系統。
注意:
jni的聲明的函數要和java聲明的函數一一對應。
1.編入系統:
(1). 主要
代碼:android_hardware_Rfid.cpp
(2).
frameworks/base/api/current.txt
修改framework/base下面的api要注意更新api/current.txt文件, 如果修改了Android原有API的 ,需要update frameworks/base/api/current.txt。
否則編譯被中斷並出現編譯錯誤提示,
可以通過運行 make update-api后,自動更新此文件,檢查確認正確后,跟代碼一起提交即可。
public class Rfid{
ctor public Rfid()method public java.lang.String getMessage();method public int sendMessage(java.lang.String);
method public void intercomPowerOff();method public void intercomPowerOn();
}
(3) .
frameworks/base/core/jni/Android.mk
LOCAL_SRC_FILES += android_hardware_Intercom.cpp //加入編譯
(4).
frameworks/base/core/jni/AndroidRuntime.cpp
extern int register_android_hardware_Intercom(JNIEnv* env);
/register_android_hardware_Intercom 類中加入:
REG_JNI(register_android_hardware_Intercom), //使系統在啟動的時候就加載JNI庫
2.生成SO文件,
與APK一起也可以:
RfidJNI.rar
apk里面帶有SO文件,只要有節點就可以打開,進行運行,
直接在目錄下mm就可以生成動態庫。
3.rfid的linux c程序,external目錄下
附件rfid.rar