【问题标题】:AssetManager and native codeAssetManager 和本机代码
【发布时间】:2012-03-20 16:40:52
【问题描述】:

我有一个 config.txt 文件。使用 nocompress extension="txt" 选项在 apk 构建期间不压缩文件。然后我在我的 java 代码资产管理器中打开并将其传递给本机函数。最后,我使用下面的代码打开了一个 File*。 问题是当调用 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");

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 2011-02-25
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2014-04-11
      • 1970-01-01
      相关资源
      最近更新 更多