日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android系统修改硬件设备访问权限

發(fā)布時(shí)間:2025/4/16 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android系统修改硬件设备访问权限 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Android系統(tǒng)修改硬件設(shè)備訪問權(quán)限

?

在硬件抽象層模塊文件(so)文件中,提供的函數(shù)調(diào)用open函數(shù)來打開設(shè)備文件,比如/dev/gpio,如果不修改設(shè)備文件/dev/gpio的訪問權(quán)限,那么應(yīng)用程序通過JNI接口來調(diào)用硬件抽象層提供的函數(shù)接口來調(diào)用open函數(shù)打開設(shè)備文件就會(huì)失敗,這表示當(dāng)前用戶沒有權(quán)限打開設(shè)備文件/dev/gpio文件。在默認(rèn)情況下,只有root用戶才有權(quán)限訪問系統(tǒng)的設(shè)備文件,由于一般的應(yīng)用程序沒有root權(quán)限的。

?

為了解決上面的問題,需要為用戶賦予訪問設(shè)備文件/dev/gpio的權(quán)限。在linux系統(tǒng)中,可通過udev規(guī)則在系統(tǒng)啟動(dòng)時(shí)修改設(shè)備文件的訪問權(quán)限,但在Android系統(tǒng)中沒有實(shí)現(xiàn)udev規(guī)則,而是提供uevent機(jī)制,可以在系統(tǒng)啟動(dòng)時(shí)修改設(shè)備文件的訪問權(quán)限。

?

在system/core/rootdir目錄下有一個(gè)名為ueventd.rc的配置文件,我們可以再里面增加下面一行內(nèi)容來修改設(shè)備文件/dev/freg的訪問權(quán)限

/dev/gpio?? 0666?root? root

這表示所有的用戶均可以訪問設(shè)備文件/dev/gpio,修改了ueventd.rc文件后可以重新編譯Android源代碼工程才能生效,但為了節(jié)省時(shí)間可通過另一種簡單的方式。

?

在編譯Android系統(tǒng)時(shí),文件/system/core/rootdir/uevent.rc會(huì)被拷貝到/out/target/product/prj/root目錄下,并且最終打包在ramdisk.img鏡像文件(最小的文件系統(tǒng),它包括了初始化android系統(tǒng)所需要的全部核心文件)中。當(dāng)Android系統(tǒng)啟動(dòng)時(shí),會(huì)把ramdisk.img鏡像文件中的ueventd.rc文件安裝在設(shè)備根目錄下,并且由init進(jìn)程來解析它的內(nèi)容和修改相應(yīng)的設(shè)備訪問權(quán)限:


圖1

所以只要我們能夠修改ramdisk.img鏡像文件中的ueventd.rc文件的內(nèi)容,就可以修改設(shè)備文件/dev/gpio的訪問權(quán)限了,下面介紹詳細(xì)的修改辦法。

?

1.?????查看ramdisk.img文件格式

在\mediatek\source\kernel\trace32目錄下可以找到hsimobile77_ics2_ramdisk.img文件,在\out\target\product\hsimobile77_ics2下有ramdik.img,我也把

hsimobile77_ics2_ramdisk.img拷貝到此目錄下,用file命令來查看著兩個(gè)文件(大小一樣)的類型,卻不一樣,分別是gzip compressed data,from unix和ramdisk.img,很奇怪為什么不一樣。下面以hsimobile77_ics2_ramdisk.img舉例。

?

圖2

?

?

2.?????解壓hsimobile77_ics2_ramdisk.img

從圖2可知hsimobile77_ics2_ramdisk.img是一個(gè)gzip文件,所以我們可以執(zhí)行g(shù)unzip文件來解壓。


圖3

先將hsimobile77_ics2_ramdisk.img該名為ramdisk.img.gz,然后用gunzip命令對(duì)它解壓,加壓后得到的ramdisk.img文件保存在cw6577目錄中。

?

?

3.?????還原ramdisk.img鏡像文件

解壓后的ramdisk.img文件是一個(gè)cpio格式的文件(包含其他文件盒有關(guān)信息的歸檔文件),因此我們可以執(zhí)行cpio命令對(duì)它解除歸檔:


圖4

解除歸檔后的內(nèi)容保存在ramdisk目錄下,如下圖:


圖5

?

?

4.?????修改ueventd.rc文件

進(jìn)入圖5的目錄,修改ueventd.rc文件,增加下面的內(nèi)容:

/dev/gpio?? 0666?root? root

?

5.?????重新打包ramdisk.img鏡像文件

先把ramdisk目錄歸檔成為cpio文件,然后壓縮成為gzip文件


圖6

?

?

總結(jié)

以上是生活随笔為你收集整理的Android系统修改硬件设备访问权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。