1.通过产品mk文件中的PRODUCT_COPY_FILES宏将自定义的.rc文件拷贝至根文件系统,一般拷贝到system/etc/init
目录下。
2.system/core/init/builtins
中的import_late方法会解析system/etc/init
等目录下的所有的.rc文件。
/* Imports .rc files from the specified paths. Default ones are applied if none is given.
*
* start_index: index of the first path in the args list
*/
static void import_late(const std::vector<std::string>& args, size_t start_index, size_t end_index) {
Parser& parser = Parser::GetInstance();
if (end_index <= start_index) {
// Use the default set if no path is given
static const std::vector<std::string> init_directories = {
"/system/etc/init",
"/vendor/etc/init",
"/odm/etc/init"
};
for (const auto& dir : init_directories) {
parser.ParseConfig(dir);
}
} else {
for (size_t i = start_index; i < end_index; ++i) {
parser.ParseConfig(args[i]);
}
}
}
3.至于import_late方法是何时被调用的,看源码是和mount相关的,此处就不深究了。
0 条评论