在硬體抽象層模組檔案(so)檔案中,提供的函式呼叫open函式來開啟裝置檔案,比如/dev/gpio,如果不修改裝置檔案/dev/gpio的訪問許可權,那麼應用程式通過jni介面來呼叫硬體抽象層提供的函式介面來呼叫open函式開啟裝置檔案就會失敗,這表示當前使用者沒有許可權開啟裝置檔案/dev/gpio檔案。在預設情況下,只有root使用者才有許可權訪問系統的裝置檔案,由於一般的應用程式沒有root許可權的。
為了解決上面的問題,需要為使用者賦予訪問裝置檔案/dev/gpio的許可權。在linux系統中,可通過udev規則在系統啟動時修改裝置檔案的訪問許可權,但在android系統中沒有實現udev規則,而是提供uevent機制,可以在系統啟動時修改裝置檔案的訪問許可權。
在system/core/rootdir目錄下有乙個名為ueventd.rc的配置檔案,我們可以再裡面增加下面一行內容來修改裝置檔案/dev/freg的訪問許可權
/dev/gpio 0666 root root
這表示所有的使用者均可以訪問裝置檔案/dev/gpio,修改了ueventd.rc檔案後可以重新編譯android源**工程才能生效,但為了節省時間可通過另一種簡單的方式。
在編譯android系統時,檔案/system/core/rootdir/uevent.rc會被拷貝到/out/target/product/prj/root目錄下,並且最終打包在ramdisk.img映象檔案(最小的檔案系統,它包括了初始化android系統所需要的全部核心檔案)中。當android系統啟動時,會把ramdisk.img映象檔案中的ueventd.rc檔案安裝在裝置根目錄下,並且由init程序來解析它的內容和修改相應的裝置訪問許可權:
Android系統修改硬體裝置訪問許可權
android系統修改硬體裝置訪問許可權 注 本文主要針對熱插拔裝置,板卡自帶的裝置可以在init.project.rc檔案中修改 在系統啟動時就提公升裝置訪問許可權 在硬體抽象層模組檔案 so 檔案中,提供的函式呼叫open函式來開啟裝置檔案,比如 dev gpio,如果不修改裝置檔案 dev g...
遍歷系統硬體裝置資訊
以下 段演示如何顯示已經安裝的所有硬體裝置的列表 include include include include include int main int argc,char argv char envp enumerate through all devices in set.deviceinfo...
裝置系統功能修改
工作內容 1.頁面新增字段,當 合同型別 選擇 監理 增加對應的施工合同 監理總監字段 js 為 1 function else 10 11 增加的施工合同 監理總監字段,使用者點選會彈出乙個頁面,使用者在彈出的頁面中選擇對應資訊,該資訊會回填到施工合同 監理總監欄位中,施工合同頁面 為 1 2st...