【发布时间】:2020-02-16 09:03:12
【问题描述】:
我正在尝试使用 VS 2019 的 Android Native Activity 中的 AAssetManager 加载图像和文本文件。我已经尝试了所有我能想到的路径组合以获取 AAssetManager_openDir 或 AAssetManager_open 到给我一个文件。我在其他地方找到的解决方案与不正确的路径或 AAssetManager 对象无效有关。
这是我尝试访问我的图像和文本文件的方式。
AAssetManager* pMan = m_pApp->activity->assetManager;
AAsset* pAsset = AAssetManager_open(pMan, "drawable\\testpng", AASSET_MODE_BUFFER); // Always returns NULL
AAssetDir* pAssetDir = AAssetManager_openDir(pMan, "res\\drawable");
const char* szFilename;
while ((szFilename = AAssetDir_getNextFileName(pAssetDir)) != NULL)
{
// 'szFilename' is always NULL and this print never gets hit
__android_log_print(ANDROID_LOG_DEBUG, "Debug", szFilename);
}
这是我的Android.Packaging 项目。
Android 清单
<string name="testpng">drawable\test.png</string>
<string name="testdrawtxt">drawable\testtext.txt</string>
<string name="testpng2">drawable\assets\test2.png</string>
<string name="testdrawtxt2">drawable\assets\testtext2.txt</string>
据我所知,资产管理器是有效的。我做错了什么?
【问题讨论】:
-
资产不应位于 res 之下,而应位于同一层级。
-
就是这样!我在这上面花了太长时间,我只是把它放在错误的目录中。我在“res”文件夹旁边创建了一个名为“assets”的文件夹,并将项目放在那里。只需调用
AAssetManager_open(pMan, "test.png", AASSET_MODE_BUFFER)就没有问题。非常感谢。为什么不将其发布为答案?
标签: c++ android-ndk visual-studio-2019 android-assetmanager