我一直在开发具有非常小尺寸的 nand flash 的 android 电视。因此,所有用户应用程序和数据都应该放在外部 sd 卡上。
我对多用户的外部存储策略感到困惑。我应该如何配置所有这些变量,例如 EXTERNAL_STORAGE、EMULATED_STORAGE_SOURCE、EMULATED_STORAGE_TARGET
我当前的配置如下:
初始化文件
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
vold.fstab
dev_mount sdcard /mnt/shell/emulated auto /devices/platform/...
存储列表
<StorageList xmlns:android="http://schemas.android.com/apk/res/android">
<!-- internal emulated storage -->
<storage
android:storageDescription="@string/storage_internal"
android:emulated="true"
android:mtpReserve="100" />
<storage android:mountPoint="/mnt/shell/emulated"
android:storageDescription="@string/storage_sd_card"
android:removable="true"
android:primary="true" />
</StorageList>
使用此配置适用于 android-4.2 设备,我发现每次拔下 sdcard 并重新安装它时,由于权限,那些正在运行的进程将在 sdcard 上的 I/O 操作上遇到错误。但是新的 zygote-forked 进程会正常工作。