JNI读取安卓asset下的文件需要使用到NDK目录下的asset_manager_jni.h和asset_manager.h提供的接口。
1.从java端使用getAssets()得到一个JAVA端的AssetManager对象,通过JNI调用传递到C++端。
2.C++端使用NDK提供的AAssetManager_fromJava方法得到C++端的AAssetManager的指针用于打开里面的文件。
3.使用AAssetManager_open方法打开指定文件名的文件得到AAsset*用于获取文件内容和长度,作用和fopen打开文件产生的FILE指针类似。
4.使用AAsset_getLength获取文件长度,如果文件不是很大可以直接用malloc分配空间使用AAsset_read进度文件内容读取。
5.读取完毕使用AAsset_close关闭打开的文件。
在Android开发中,JNI通过AAssetManager接口可以读取asset目录的文件。首先,从Java层获取AssetManager对象,然后通过JNI传递到C++层。在C++层,使用AAssetManager_fromJava转换为C++的AAssetManager指针,并用AAssetManager_open打开文件。接着,AAsset_getLength获取文件长度,根据长度分配内存,AAsset_read读取文件内容。最后,使用AAsset_close关闭文件。
3000

被折叠的 条评论
为什么被折叠?



