Android资产和NDK

nmn*_*nir 6 android-ndk

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

  1. 我把file.txt放在assets文件夹下
  2. 在我的活动中,我正在创建资产管理器:assetManager = getAssets(); 然后我将assetManager传递给我的本机方法(如本机音频示例中所示):

    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);   
    
    Run Code Online (Sandbox Code Playgroud)

问题是fd小于0 !!!

任何人都可以帮忙吗?

Mār*_*iko 5

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);
Run Code Online (Sandbox Code Playgroud)

使用AAsset_readAAsset_getBuffer.