Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

生成新包失败问题 #42

Closed
h923745834 opened this issue Nov 29, 2019 · 8 comments
Closed

生成新包失败问题 #42

h923745834 opened this issue Nov 29, 2019 · 8 comments

Comments

@h923745834
Copy link

大佬你好,
我在libs里添加了armea-v7a/libapkpatch.so.加载so文件也成功。
在Activity oncreate()调用
ApkPatch.patch(oldApkPath, oldDiffpath, newApkpath,maxUncompressMemory,tempUncompressFilePath,1)
参数:
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
String oldApkPath = root+"/1/old.apk";
String oldDiffpath = root+"/1/add.diff";
String newApkpath = root+"/1/new.apk";
long maxUncompressMemory = 810241024;//8mb
String tempUncompressFilePath=root+"/360/";
没有生成新包,返回值1。

@sisong
Copy link
Owner

sisong commented Nov 29, 2019

返回1(也就是PATCH_OPENREAD_ERROR), 说明文件(old.apk或add.diff)无法访问到;
另外tempUncompressFilePath参数应该是一个文件名,而不能是目录;

@h923745834
Copy link
Author

临时解压文件已改成
String tempUncompressFilePath=root+"/360/temp";
之前都是访问权限问题,现在返回 7,有生成新文件,但0B.
我调试是读写权限都有了。不知什么问题?

@h923745834
Copy link
Author

@sisong

@sisong
Copy link
Owner

sisong commented Nov 29, 2019

你自己可以看返回值(TPatchResult)是什么意思的,7是PATCH_COMPRESSTYPE_ERROR,表示解压缩插件和压缩类型不匹配(或者add.diff的数据有误);

另外:add.diff 是用ZipDiff命令生成的吗? 这个文件也可以用ZipPatch在电脑上先测试一下

@h923745834
Copy link
Author

@sisong 周一好,确认了一下,我们后端是 使用hdiffz -s -d yqqs_v1.3.2.apk yqqs_v1.4.2.apk yqqs.diff
来生成这个差分包的。在后端他们测试是可以合成正确的新包。这样是不是说前端解压方式不对?如果不对,前后端分别使用哪个工具呢?

@sisong
Copy link
Owner

sisong commented Dec 2, 2019

你用错工具了: hdiffz和hpatchz对应;而ApkNormalized+ZipDiff和ZipPatch对应 (这是针对apk、zip文件格式的优化版); libapkpatch.so是ZipPatch的android库;
hpatchz的android库需要你自己编译,只裁剪出自己需要的那一部分功能来生成so;

@h923745834
Copy link
Author

哪套工具比较合适已上线应用?我看了一下apkDiffPatch比较高效

@sisong
Copy link
Owner

sisong commented Dec 2, 2019

我们在Andoroid上用的ApkDiffPatch这套; 在PC上用的HDiffPatch这套(支持目录diff&patch);

@sisong sisong closed this as completed Dec 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants