getStartOffset returns 装配条件升级后资产文件夹中文件的错误值
getStartOffset returns wrong value of file in assets folder after upgrade of assembly conditions
升级装配条件后getStartOffset()
方法无法正常工作。
以下代码片段可以很好地使用 api19(Android 插件 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。 StartOffset 是 apk-package.
中的偏移
兴奋是徒劳的。一切正常:
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, offSet, length);
int spos = 0;
while(spos < length) {
......
}
升级装配条件后getStartOffset()
方法无法正常工作。
以下代码片段可以很好地使用 api19(Android 插件 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。 StartOffset 是 apk-package.
兴奋是徒劳的。一切正常:
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, offSet, length);
int spos = 0;
while(spos < length) {
......
}