gpt4 book ai didi

Android Assets 、C、JNI

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:27 25 4
gpt4 key购买 nike

如何使用 JNI 从 C 访问 Android Assets ,例如 .txt 文件?

我正在尝试“file:///android_asset/myFile.txt”,并在本地“myFile.txt”中使用 jni 文件夹中的 myFile.txt 副本和 C 实现文件。

最佳答案

Assets 的问题在于您不能将它们作为文件直接访问。这是因为 Assets 是直接从 APK 中读取的。安装时它们不会解压缩到给定的文件夹。

从 Android 2.3 开始,有一个 C API 来访问 Assets 。看看<android/asset_manager.h>assetManager <android/native_activity.h> 中的字段.不过我从未使用过它,而且我不确定如果您不依赖 native Activity 是否可以使用此 Assets 管理器 API。无论如何,这不适用于 Android 2.2 及更低版本。

所以我看到三个选项:

  • 您可以将 Assets 提取到某个目录中,但这会占用额外的空间
  • 您可以( bundle 和)使用 libzip 之类的东西以纯 C 语言从 APK 中读取 Assets 。
  • 或者,为了避免 bundle 额外的库,我个人的偏好是使用 JNI 从 Java InputStream 中读取 C 中的数据。 AssetManager.open() 返回的对象.它需要一些代码,但效果很好。

关于Android Assets 、C、JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4779955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com