Tencent / tinker

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
Other
17.14k stars 3.33k forks source link

使用tinker-patch-cli-1.9.12.jar生成差分包时报空指针错误 #1035

Closed androidStc closed 5 years ago

androidStc commented 5 years ago

异常类型:编译异常

手机型号:

手机系统版本:Android4.4.4

tinker版本:如:1.7.7

gradle版本:如:2.10

是否使用热更新SDK: TinkerPatch SDK

系统:windows10

堆栈/日志:

D:\buildSdk\build>java -jar tinker-patch-cli-1.9.12.jar -old E6_old_1.apk -new E6_old_2.apk -config tinker_config.xml -out new_apk special configFile file path:D:\buildSdk\build\tinker_config.xml special output directory path: D:\buildSdk\build\new_apk reading config file, D:\buildSdk\build\tinker_config.xml -----------------------Tinker patch begin----------------------- configuration: oldApk:D:\buildSdk\build\E6_old_1.apk newApk:D:\buildSdk\build\E6_old_2.apk outputFolder:D:\buildSdk\build\new_apk isIgnoreWarning:false isProtectedApp:false 7-ZipPath:7za useSignAPk:true package meta fields: filed name:patchMessage, filed value:classes.dex filed name:platform, filed value:all dex configs: dexMode: jar dexPattern:assets/secondary-dex-..jar dexPattern:classes..dex dex loader:com.tencent.tinker.loader. dex loader:tinker.sample.android.SampleApplication lib configs: libPattern:lib/./..so resource configs: resPattern:res/. resPattern:assets/. resPattern:AndroidManifest.xml resPattern:resources.arsc resIgnore change:assets/sample_meta.txt largeModSize:100kb useApplyResource:false

Analyze old and new apk files: old apk: E6_old_1.apk, size=18327132, md5=22c0398c1ac9d67c88bda61459ed40b6 new apk: E6_old_2.apk, size=18327135, md5=5783cc6575a0139c02365f81e46e7094

Manifest was changed, while there's no any new components added. Make sure if such changes were all you expected.

UnZipping apk to D:\buildSdk\build\new_apk\E6_old_1 UnZipping apk to D:\buildSdk\build\new_apk\E6_old_2 found modify resource: AndroidManifest.xml, but it is AndroidManifest.xml, just ignore! Check for loader classes in dex: classes.dex

Gen classes.dex patch file:D:\buildSdk\build\new_apk\tinker_result\classes.dex, size:656, md5:8c5ca89faaef394cc9c85584118d98c6 Verifying if patched new dex is logically the same as original new dex: E6_old_2/classes.dex ...

Gen classes.dex for dalvik full dex file:D:\buildSdk\build\new_apk\tempPatchedDexes\classes.dex, size:7702296, md5:22484282cfd73bded332850b4a349e90 DexDecoder:write meta file data: classes.dex,,22484282cfd73bded332850b4a349e90,22484282cfd73bded332850b4a349e90,8c5ca89faaef394cc9c85584118d98c6,3370757797,4096928198,jar java.lang.NullPointerException at com.tencent.tinker.build.decoder.DexDiffDecoder.addTestDex(DexDiffDecoder.java:503) at com.tencent.tinker.build.decoder.DexDiffDecoder.onAllPatchesEnd(DexDiffDecoder.java:201) at com.tencent.tinker.build.decoder.ApkDecoder.patch(ApkDecoder.java:123) at com.tencent.tinker.build.patch.Runner.tinkerPatch(Runner.java:65) at com.tencent.tinker.patch.CliMain.run(CliMain.java:106) at com.tencent.tinker.patch.CliMain.main(CliMain.java:54)

Usage: java -jar tinker.jar -old old.apk -new new.apk -config tinker_config.xml -out output_path others please contact us

XHelloCode commented 5 years ago

使用 tinker-patch-cli-1.9.12.jar版本也遇到类似的问题,同问

androidStc commented 5 years ago

最终发现是打包时 test.dex文件没有打包进tinker-patch-cli-1.9.12.jar

ranhuanbin commented 5 years ago

你好请问一下这个问题你是如何解决的呢?

tanhaoshi commented 3 years ago

目前我是将tinker-patch-cli项目fork下来放入本地,通过命令的方式去生成差分包。我也遇到了这个问题,我想问问您是如何生成test.dex