AssetManager和本机代码

时间:2012-03-20 16:40:53

标签: android-ndk

我有一个config.txt文件。使用nocompress extension =“txt”选项在apk构建期间不压缩文件。然后我在我的java代码资产管理器中打开并将其传递给本机函数。最后我使用下面的代码打开文件*。 问题是当调用fgets(line,32,file) - 其中line是char *时 - line的内容不是文件的第一行。

AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
if(NULL == mgr) return -1;
AAsset* asset = AAssetManager_open(mgr, "config.txt", AASSET_MODE_UNKNOWN);
if (NULL == asset) {
    return -1;
}
off_t start, length;
int fd = AAsset_openFileDescriptor(asset, &start, &length);
if (fd < 0)
    return -1;
 FILE * file = fdopen(fd, "r");

1 个答案:

答案 0 :(得分:0)

正如您在https://code.google.com/p/java-ide-droid/source/browse/trunk/jni/aapt/jni/Package.cpp中所看到的(搜索“static const char * kNoCompressExt”),txt不在排除列表中,可能会被压缩! 实际上这应该导致fd小于零。