这是报错堆栈
apkSize : 110697856
contentEntry : first = java.nio.HeapByteBuffer[pos=0 lim=109719552 cap=109719552] , second = 0
schemeV2Block : first = java.nio.HeapByteBuffer[pos=0 lim=16384 cap=16384] , second = 109719552
centralDir : first = java.nio.HeapByteBuffer[pos=0 lim=961898 cap=961898] , second = 109735936
eocd : first = java.nio.HeapByteBuffer[pos=0 lim=22 cap=22] , second = 110697834
generatedChannelApk , channel = YDSB22 , apkChannelName = YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk
generateApkSigningBlock , needPadding = false
addIdValueByteBufferMap , oldApkSigningBlock size = 16384 , newApkSigningBlock size = 16402
addIdValueByteBufferMap , after add channel , new apk is F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk , length = 110697874
try to read channel info from apk : F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk
getByteBufferValueById , destApk F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk IdValueMap = {1896449818=java.nio.HeapByteBuffer[pos=0 lim=1658 cap=1658], 1347109971=java.nio.HeapByteBuffer[pos=0 lim=14670 cap=14670], -2012129793=java.nio.HeapByteBuffer[pos=0 lim=6 cap=6]}
getByteValueById , id = -2012129793 , value = java.nio.HeapByteBuffer[pos=0 lim=6 cap=6]
generatedChannelApk destFile(F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk)add channel success
generatedChannelApk error , please check it and fix it ,and that you should generate all Channel Apk again!
java.lang.RuntimeException: APK Signing Block size is not multiple of page size: 16402
at com.android.apksig.internal.apk.ApkSigningBlockUtils.verifyIntegrity(ApkSigningBlockUtils.java:204)
at com.android.apksig.internal.apk.v2.V2SchemeVerifier.verify(V2SchemeVerifier.java:159)
at com.android.apksig.internal.apk.v2.V2SchemeVerifier.verify(V2SchemeVerifier.java:113)
at com.android.apksig.ApkVerifier.verify(ApkVerifier.java:243)
at com.android.apksig.ApkVerifier.verify(ApkVerifier.java:126)
at com.tencent.vasdolly.verify.VerifyApk.getVerifierResult(VerifyApk.java:44)
对比了正常分包的日志 只要是needPadding = false时就必失败 但是签名块是否有verity padding块 完全是不可控的 而vasdolly又高度依赖这个padding 不然注入渠道后 签名块长度必变动 一旦变动就百分百不会被4096整除 就校验报错了 包括walle也是同样的问题 所以 真的希望作者能做下兼容 可能这个项目很久都没人维护了 我们也本可以换个分包方式避开vasdolly walle这些工具 但是避不开第三方使用啊 特别是一些广告推广 他们使用的就是这两个 ,一旦分包报错了 我们这边又无能为力,完全没法兼容,因为这东西并不可控,有什么好的解决办法吗?
这是报错堆栈
apkSize : 110697856
contentEntry : first = java.nio.HeapByteBuffer[pos=0 lim=109719552 cap=109719552] , second = 0
schemeV2Block : first = java.nio.HeapByteBuffer[pos=0 lim=16384 cap=16384] , second = 109719552
centralDir : first = java.nio.HeapByteBuffer[pos=0 lim=961898 cap=961898] , second = 109735936
eocd : first = java.nio.HeapByteBuffer[pos=0 lim=22 cap=22] , second = 110697834
generatedChannelApk , channel = YDSB22 , apkChannelName = YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk
generateApkSigningBlock , needPadding = false
addIdValueByteBufferMap , oldApkSigningBlock size = 16384 , newApkSigningBlock size = 16402
addIdValueByteBufferMap , after add channel , new apk is F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk , length = 110697874
try to read channel info from apk : F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk
getByteBufferValueById , destApk F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk IdValueMap = {1896449818=java.nio.HeapByteBuffer[pos=0 lim=1658 cap=1658], 1347109971=java.nio.HeapByteBuffer[pos=0 lim=14670 cap=14670], -2012129793=java.nio.HeapByteBuffer[pos=0 lim=6 cap=6]}
getByteValueById , id = -2012129793 , value = java.nio.HeapByteBuffer[pos=0 lim=6 cap=6]
generatedChannelApk destFile(F:\workplace6\walle\cmd\output\YDSB22-yitian_release_R_9.12.12_31111_260105150826.apk)add channel success
generatedChannelApk error , please check it and fix it ,and that you should generate all Channel Apk again!
java.lang.RuntimeException: APK Signing Block size is not multiple of page size: 16402
at com.android.apksig.internal.apk.ApkSigningBlockUtils.verifyIntegrity(ApkSigningBlockUtils.java:204)
at com.android.apksig.internal.apk.v2.V2SchemeVerifier.verify(V2SchemeVerifier.java:159)
at com.android.apksig.internal.apk.v2.V2SchemeVerifier.verify(V2SchemeVerifier.java:113)
at com.android.apksig.ApkVerifier.verify(ApkVerifier.java:243)
at com.android.apksig.ApkVerifier.verify(ApkVerifier.java:126)
at com.tencent.vasdolly.verify.VerifyApk.getVerifierResult(VerifyApk.java:44)
对比了正常分包的日志 只要是needPadding = false时就必失败 但是签名块是否有verity padding块 完全是不可控的 而vasdolly又高度依赖这个padding 不然注入渠道后 签名块长度必变动 一旦变动就百分百不会被4096整除 就校验报错了 包括walle也是同样的问题 所以 真的希望作者能做下兼容 可能这个项目很久都没人维护了 我们也本可以换个分包方式避开vasdolly walle这些工具 但是避不开第三方使用啊 特别是一些广告推广 他们使用的就是这两个 ,一旦分包报错了 我们这边又无能为力,完全没法兼容,因为这东西并不可控,有什么好的解决办法吗?