[安卓系统]如何在启动阶段之前/期间在存储/模拟/0中创建文件夹



我需要在storage/emulated/0中创建一个文件夹,然后执行装载操作。

首先,我尝试在/system/core/rootdir/init.rc 中进行操作

mkdir /storage/emulated/0/avtmp
mount tmpfs tmpfs /storage/emulated/0/avtmp size=10m

但在";在init"上;或";关于后fs数据";,和mkdir通过使用其他路径工作,如

mkdir /system/test

因此,我认为问题在于/storage/amulated/0创建的时间我也尝试过在/system/core/rootdir/Android.mk 中这样做

LOCAL_POST_INSTALL_CMD += ; mkdir /storage/emulated/0/avtmp
LOCAL_POST_INSTALL_CMD += ; mount -t tmpfs -o size=10m tmpfs /storage/emulated/0/avtmp

它也不起作用。

我通过谷歌或其他方式搜索帮助,但我得到的所有答案都是关于应用程序开发,而不是系统。有人能帮我吗?

现在这个问题已经解决了。存储/模拟/0;vold";过程不";init";进程,所以我们应该在VolumeManager中执行mkdir和mount。

代码在/system/vold/VolumeManager.cpp 中

int VolumeManager::linkPrimary(userid_t userId) {
std::string source(mPrimary->getPath());
if (mPrimary->getType() == android::vold::VolumeBase::Type::kEmulated) {
source = StringPrintf("%s/%d", source.c_str(), userId);
fs_prepare_dir(source.c_str(), 0755, AID_ROOT, AID_ROOT);
//MYCODE BEGIN
std::string mountPath = StringPrintf("%s/avtmp", source.c_str());
fs_prepare_dir(mountPath.c_str(), 0755, AID_ROOT, AID_SDCARD_RW);
std::vector<std::string> cmd;
cmd.push_back("mount");
cmd.push_back("-t");
cmd.push_back("tmpfs");
cmd.push_back("-o");
cmd.push_back("size=10m");
cmd.push_back("tmpfs");
cmd.push_back(mountPath.c_str());
android::vold::ForkExecvp(cmd);
//MYCODE END
.......//other codes
}
}

最新更新