我在C++代码中使用AssetManager来加载我的资产。但是,如果应用程序内部目录AssetManager中存在同名文件,请先检查并加载。

是否可以将AssetManager设置为避开内部应用程序目录中的文件并仅检查资产文件?

UPD:我错了。 AssetManager正常工作。

最佳答案

Java和NDK的行为相同。两者都在后台使用AssetManager class。对于earlier versions of AssetManager.cpp AssetManager::open()的工作原理相同。

从理论上讲,可以调整AssetManager的行为(毕竟,AssetManager.addAssetPaths()公共(public),并且可以通过反射来获取),但是没有记录的方法可以这样做,这意味着您不知道自己的hack是否可以继续工作下一个版本的Android,或系统上某些供应商的自定义版本。

我建议不要这样做。检查内部目录中是否存在相同文件,并根据需要删除或重命名更为安全。但是无论如何,资产管理器通常不会从应用程序的内部文件目录中读取。

10-02 05:59