新しいAndroid4.2を自社ハードウェアに移植しています。vold を使用して mmc のパーティションを /mnt/sdcard にマウントし、マルチユーザー機能を閉じます。ターミナルで、0777 パーミッションを持つ SD カードを見つけることができます。しかし、「es file manager」などの Android アプリを使用して /mnt/sdcard を参照すると、「SD カードがマウントされていません」と表示されます
それから、それをテストして、小さなプログラムを書きます。ファイルにアクセスしようとすると、パーミッション 0000 が返されます。これは、パーティションをマウントする前に init.rc によって定義されています。
vold.fstab で
dev_mount sdcard /mnt/sdcard 1 /devices/platform/ns115-sdmmc.0/mmc_host/mmc1
init.xxx.rc で
export EXTERNAL_STORAGE /mnt/sdcard
mkdir /mnt/sdcard 0000 system system
symlink /mnt/sdcard /sdcard
vold で、mmc ディスクを /mnt/sdcard に fstype vfat でマウントし、パーミッション 0777 を与え、uid=system gid=sdcard_rw
マウントを見てください:
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0000,dmask=0000,allow_ut0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0000,dmask=0000,al0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
私はこれらのテストを試します:
- アプリを使用して /mnt/sdcard にアクセスすると、許可が拒否されて 0000 で失敗しました
- ネイティブ サービスを使用し、0777 で同じテストを成功させる
- 端末で /mnt/sdcard の成功を 0777 で確認します
だから私はそれがアプリのサインと関係があるかどうか疑問に思っていますか?