android 最簡單的乙個驅動 2

2021-08-15 16:33:21 字數 963 閱讀 6174

這篇文章使用jni訪問上篇文章寫的裝置驅動裝置!

1. 更改te檔案許可權,重新編譯android, 將boot.img替換

在android5或5.1的開發中經常會碰到,明明裝置節點是有777的許可權,可是在我們程式中訪問這個裝置卻報permission denied,無法開啟裝置。

這是因為在android 5.0或5.1下,採取了seandroid/selinux的安全機制。

selinux是美國****局和一些公司設計的乙個針對linux的安全加強系統,在這種訪問控制體系的限制下,程序只能訪問那些在他的任務中所需要檔案。

下面我們來看看怎麼設定來允許我們的應用可以訪問裝置節點。

第一步,我們找到file_contexts檔案,這個檔案通常在device/mypaltform/sepolicy 或者external/sepolicy目錄下。我們在這個檔案下增加一行 「/dev/devname u:object_r:my_device:s0」。/dev/devname是裝置節點,也就是我們要開啟的裝置名。my_device我們可以定義乙個我們看的懂的有意義的名字。object_r標明這是乙個檔案。s0是表示優先順序的。

第二步,在device.te檔案中新增一行 「type my_device, dev_type 」;

2. 需要將/dev/myhello的許可權設定為777

3. 使用android studio建立乙個jni程式

cpp的內容如下:

extern "c"

jniexport jstring

jnicall

jnienv *env,

jobject /* this */)

執行,則可以看到列印timur, 列印timur2則說明說明許可權有問題

問題:chmod 777 /dev/myhello 這一步,如何用**來實現?不知道!

2018.2.20

測試驅動開發隨筆 乙個最簡單的例子

如果你懶得去看那些很長很長的例子,不妨看看下面這個小例子,這個例子能讓你對測試驅動開發有乙個直觀的了解.最起碼讓你知道測試驅動開發是一種開發技術而不是一項測試的技術 fibonacci 數列,呵呵可能有不少人都忘了怎麼編的了吧,那正好帶你看看tdd的威力 測試驅動開發,那麼測試先行是必然的了.第乙個...

乙個簡單的keyboard驅動

這個驅動使能了幾個cpld控制的按鍵,f1,f2,f3,f4,home,up,down,left,right,esc,enter。1.cpld kpd probe static int cpld kpd probe struct platform device pdev cpld input dev...

驅動篇 乙個簡單的led驅動

1.構造裝置結構體 struct light dev cdev結構體 struct cdev 2.設定裝置資訊 struct light dev light devp 設定裝置結構體變數 int light major light major 設定主裝置號3.設定並填充file operations...