Android ndk 如何在NDK中使用Asset Manager API读取原始数据?

Android ndk 如何在NDK中使用Asset Manager API读取原始数据?,android-ndk,buffer,android-assetmanager,Android Ndk,Buffer,Android Assetmanager,我将着色器保存在资产文件夹中。 着色器的名称(文件名):“vertex.vs” 路径:资源/着色器/顶点.vs 我想从NDK的C++文件中访问这个文件,而不调用java或JNI。 通过阅读各种资源,我了解到我必须使用标题 #include <android/asset_manager.h> 但它什么也没用。 这个读取函数的作用是什么 AAsset_read(mAsset,pBuffer,bytesToRead); 数据在哪里读取?如何定义pBuffer? 有人可以分享一个简单的示

我将着色器保存在资产文件夹中。 着色器的名称(文件名):“vertex.vs” 路径:资源/着色器/顶点.vs

<>我想从NDK的C++文件中访问这个文件,而不调用java或JNI。 通过阅读各种资源,我了解到我必须使用标题

#include <android/asset_manager.h>
但它什么也没用。 这个读取函数的作用是什么

AAsset_read(mAsset,pBuffer,bytesToRead);
数据在哪里读取?如何定义pBuffer?
有人可以分享一个简单的示例,说明如何从原始文件读取数据以及如何访问它(如在logcat中显示数据)?

您必须初始化mAssetManager首先,我们通常通过JNI调用从Java获取数据,请参见示例。你可以在C++代码中获得这个java对象,但是这仍然需要<强> jnEnv .< 如果您真的想在没有JNI交互的情况下从APK中提取资产,这并非不可能。诀窍是要相信它是一个隐藏在引擎盖下的ZIP文件

有人可以分享一个简单的例子,说明如何从原始文件读取数据以及如何访问它(比如在logcat中显示)

从res/raw解压资源文件并将其放入FilesDir位置(例如/data/user/0/com.example.myapp/files)的示例项目,该位置可从本机代码访问


还有一个活动图,描述这种方法的算法。

“数据读取到哪里?”进入
pBuffer
指向的任何内存。“如何定义pBuffer?”您需要传递一个指针,指向一块足够大的内存块,以容纳
bytesToRead
字节数。@RahulNaik听起来这对您很有效,如果确实有效,请接受答案。
AAsset_read(mAsset,pBuffer,bytesToRead);