1

新しい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

私はこれらのテストを試します:

  1. アプリを使用して /mnt/sdcard にアクセスすると、許可が拒否されて 0000 で失敗しました
  2. ネイティブ サービスを使用し、0777 で同じテストを成功させる
  3. 端末で /mnt/sdcard の成功を 0777 で確認します

だから私はそれがアプリのサインと関係があるかどうか疑問に思っていますか?

4

1 に答える 1

0

おそらく、android4.2 にある必要がある正しい init.rc ファイルが必要です。init.rc が android4.1 の場合は、これを追加できます。 /mnt/secure private rec

# プライベート マウントポイントを作成して、ステージング マウント tmpfs から MS_MOVE できるようにします tmpfs /mnt/secure mode=0700,uid=0,gid=0

于 2012-12-17T09:51:10.800 に答える