android-ndk - Android Assets 和 NDK

标签 android-ndk

我正在尝试从我的 native 代码中读取一个简单的文本文件。

  • 我把file.txt放在assets文件夹下
  • 在我的事件中,我正在创建 Assets 管理器:assetManager = getAssets();然后我将 assetManager 传递给我的 native 方法和(如 native 音频示例中):
    AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
    AAsset* asset = AAssetManager_open(mgr, "file.txt", AASSET_MODE_UNKNOWN);
    AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
    
    off_t start, length;
    
    int fd = AAsset_openFileDescriptor(asset, &start, &length);   
    

  • 问题是fd小于0!!!

    任何人都可以帮忙吗?

    最佳答案

    AAsset_openFileDescriptor仅适用于未压缩的文件(如 mp3、jpg、png 等)。它写在文档中(asset_manager.h 头文件):

    /**
     * Open a new file descriptor that can be used to read the asset data.
     *
     * Returns < 0 if direct fd access is not possible (for example, if the asset is
     * compressed).
     */
    int AAsset_openFileDescriptor(AAsset* asset, off_t* outStart, off_t* outLength);
    

    使用 AAsset_readAAsset_getBuffer .

    关于android-ndk - Android Assets 和 NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516305/

    相关文章:

    c++ - Android NDK 中有异步文件 I/O 吗?

    android - 将 vector<string> 从 C++ 返回到 Java

    linux - 安装Android-EABI工具链时,是否可以覆盖/usr中的文件?

    安卓NDK : Could not find application project directory?

    android - Android 应用程序中 native cpp 函数的 UnsatisfiedLinkError (ndk)

    android - 如何在 Android NDK 中检测手机或平板电脑

    java - 如何在jni文件夹中创建java类?是否可以?

    java - 找不到 native 方法 : com. example.pjtest.JniClass.get_time:()C

    Android-NDK “java.lang.UnsatisfiedLinkError”

    android - 将预构建库与 Android NDK 结合使用时出现构建问题