如何使用 JNI 从 C 访问 Android 资产(例如 .txt 文件)?
我正在尝试“file:///android_asset/myFile.txt”,以及本地“myFile.txt”,其中包含 jni 文件夹中的 myFile.txt 副本以及 C 实现文件。
资产的问题是您无法直接将它们作为文件访问。这是因为资产是直接从 APK 读取的。安装时它们不会解压缩到给定文件夹。
从Android 2.3开始,有一个C API来访问资源。看一下<android/asset_manager.h>
和assetManager
领域在<android/native_activity.h>
。不过我从未使用过这个,并且如果您不依赖本机活动,我不确定是否可以使用此资产管理器 API。无论如何,这在 Android 2.2 及更低版本上不起作用。
所以我看到三个选择:
- 您可以将资产提取到某个目录中,但这将占用额外的空间
- 您可以(bunlde 和)使用 libzip 之类的东西从纯 C 语言的 APK 中读取资源。
- 或者,为了避免捆绑额外的库,我个人的偏好是使用 JNI 从 Java 读取 C 中的数据
InputStream
返回的对象AssetManager.open()
。它需要一些代码,但效果很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)