Android 底層驅動開發步驟——linux核心層、HAL層、JNI層
2.Linux核心驅動測試
3.Android HAL層實現
4.Aidl實現
5.Service java實現
6.Service jni 實現
7.註冊service和jni方法
8.Android App呼叫測試
1.linux驅動實現。
2.Linux核心驅動測試
建立globalmemTest測試檔案,程式碼如下所示:
#include<fcntl.h>
#include<stdio.h>
int main(void)
{
char s[] = "Linux Programmer!\n";
char buffer[80];
int fd=open("/dev/globalmem",O_RDWR);//開啟globalmem裝置,fd返回大於2的數則成功,O_RDWR為許可權
write(fd,s,sizeof(s)); //將字串s寫入globalmem字元裝置中
printf("test write %d %s\n",fd,s );
close(fd); //關閉裝置
fd=open("/dev/globalmem",O_RDWR);
read(fd,buffer,sizeof(buffer)); //讀取globalmem裝置中儲存的資料
printf("test read %d %s\n",fd,buffer); //輸出結果顯示
return 0;
}
結果展示:
3.在虛擬機器裡面測試
在Android原始碼目錄的external下新建globalmem資料夾,將globalmemTest.c放入這裡面,之後在這裡面新建Android.mk
Android.mk檔案
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES :=$(call all-subdir-c-files)
LOCAL_MODULE :=globalmemTest
include $(BUILD_EXECUTABLE)
退回至Android原始碼根目錄下,執行source build/envsetup.sh ,再用lunch載入特定型別,選擇你用的分支數字,之後再make
命令:source build/envsetup.sh
lunch
你產品分支數字
make [模組名(Android.mk中模組名字)]
之後再目標目錄可以找到編譯後生成的檔案,在虛擬機器中進入adb shell後執行它即可。
4.HAL層可檢視這篇文章