我在android应用程序的assets文件夹中保留了一些文件。
现在我编译该应用程序并获取apk。 [当我提取那个apk我的文件在资产文件夹中时]
现在我在移动设备中安装apk
并且该应用程序在使用JNI接口进行c编程时有一些代码。
现在我在该程序的c编程中fopen("myfile","r");
调用失败。
/data/data/com.packagename/something
我知道安装apk安卓副本资产文件到fopen()
所以有人知道这条路,所以我可以在fopen("/sdcard/myfile","r");
或者是否有其他方法可以在C编程中打开该文件。
如果我将这些文件保存在sdcard文件夹中并访问Regex.IsMatch
,那么它可以正常工作。但我想将这些文件仅保留在资源文件夹中
答案 0 :(得分: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, ...);
}
然后在Java中使用:
LoadAsset("myfile", getContext().getAssetManager());
答案 1 :(得分:0)
我发现的一种方法是在代码中编写测试行,例如:
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
现在,如果您知道Android的资产存储位置,例如/data/data/com.packagename/assets/file.png
,那么您就会知道资产的相对路径或绝对路径。我希望这对你有用,它帮助了我!