fnn在JNI C代码中获取失败的文件放在android应用程序的资源文件夹中

Jee*_*tel 8 c java android android-assets

我在android应用程序的assets文件夹中保存了一些文件.

现在我编译该应用程序并获取apk.[当我提取那个apk我的文件在资产文件夹中时]

现在我在移动设备中安装apk

并且在该应用程序中有一些代码在c编程与JNI接口.

现在我fopen()对该文件的c编程调用失败了.

fopen("myfile","r");
Run Code Online (Sandbox Code Playgroud)

我知道在安装apk安卓复制资产文件时 /data/data/com.packagename/something

所以,有人知道这条道路,所以我可以放弃它 fopen()

或者是否有任何其他方法在C编程中打开该文件.


如果我将这些文件保存在sdcard文件夹中并像访问那样fopen("/sdcard/myfile","r");工作文件.但我想只将这些文件保存在assets文件夹中

kic*_*hik 6

您可以使用资产管理器访问JNI代码中的资产.它是NDK的一部分.

http://developer.android.com/ndk/reference/group___asset.html

就像是:

EXPORT_API void LoadAsset(char* filename, jobject assetManager){
    AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
    AAsset* asset = AAssetManager_open(mgr, filename, AASSET_MODE_BUFFER);
    AAsset_read(asset, ...);
}
Run Code Online (Sandbox Code Playgroud)

然后在Java中:

LoadAsset("myfile", getContext().getAssetManager());
Run Code Online (Sandbox Code Playgroud)