getStartOffset returns 装配条件升级后资产文件夹中文件的错误值

getStartOffset returns wrong value of file in assets folder after upgrade of assembly conditions

升级装配条件后getStartOffset()方法无法正常工作。

以下代码片段可以很好地使用 api19Android 插件 1.5 构建应用程序。 0 + Gradle 版本 2.2.1), 但是当我尝试对 api 做同样的事情时25等建筑条件(Android插件2.2.0+Gradle版本2.14.1 ), getStartOffset() returns 值更大的文件长度。返回的长度为真。 其实读取的"png"-file不是图片,我按照aapt的要求给它扩展名PNG。

AssetFileDescriptor in = null;
FileInputStream fin = null;
FileChannel channel = null;
try {
      in = context.getAssets().openFd(file); // .png
      fin = in.createInputStream();
      channel = fin.getChannel();
      int length = (int) in.getLength(); // channel.size();
      int offSet = (int) in.getStartOffset();
      MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY,
        0, length + offSet);
      ...
      ...
     }

有什么问题?谢谢

这是正常行为。我不得不查看 APK file 的内容以进行哈希编辑。令我惊讶的是,我的 PNG 文件出现两次包含在 APK-file 中:它的第一个条目从开始的偏移量是 52 字节,在第二种情况下,startOffset 超过 2MB。 IE。 StartOffsetapk-package.

中的偏移

兴奋是徒劳的。一切正常:

MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, offSet,   length);
int spos = 0;
while(spos < length) {
 ......
}