tinker icon indicating copy to clipboard operation
tinker copied to clipboard

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.

Results 215 tinker issues
Sort by recently updated
recently updated
newest added

问题描述:发现线上有部分用户Tinker补丁包安装成功,重启设备加载补丁包过程中出现了卡住的问题,通过堆栈采集发现是‘com.tencent.tinker.loader.NewClassLoaderInjector.createNewClassLoader(SourceFile:170)’ 方法执行耗时过长,线上问题占比(1w用户里出现3例超过5秒),期望能帮忙分析下该问题以及是否有方案解决,谢谢! 异常类型:app运行时异常 手机型号:VIVO(V1816A等)、荣耀较多 手机系统版本:Android9以上 tinker版本:1.9.14.25.2 gradle版本:7.5 是否使用热更新SDK: 否 系统:Mac 堆栈/日志: dalvik.system.DexFile.openDexFileNative(Native Method) dalvik.system.DexFile.openDexFile(DexFile.java:354) dalvik.system.DexFile.(DexFile.java:101) dalvik.system.DexFile.(DexFile.java:75) dalvik.system.DexPathList.loadDexFile(DexPathList.java:394) dalvik.system.DexPathList.makeDexElements(DexPathList.java:354) dalvik.system.DexPathList.(DexPathList.java:164) dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:74) dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:65) dalvik.system.PathClassLoader.(PathClassLoader.java:64) dalvik.system.DelegateLastClassLoader.(DelegateLastClassLoader.java:81) com.tencent.tinker.loader.NewClassLoaderInjector.createNewClassLoader(SourceFile:170) com.tencent.tinker.loader.NewClassLoaderInjector.inject(SourceFile:26) com.tencent.tinker.loader.SystemClassLoaderAdder.installDexes(SourceFile:86) com.tencent.tinker.loader.TinkerDexLoader.loadTinkerJars(SourceFile:547) com.tencent.tinker.loader.TinkerLoader.tryLoadPatchFilesInternal(SourceFile:135) com.tencent.tinker.loader.TinkerLoader.tryLoad(SourceFile:21) java.lang.reflect.Method.invoke(Native...

``` 异常类型:开启R8之后,tinker的patch会变大 手机型号:Nexus 5(如是编译异常,则可以不填) 手机系统版本:Android 5.0 (如是编译异常,则可以不填) tinker版本:1.9.14.6 gradle版本:3.6.3 系统:如:Mac 堆栈/日志: 1. 如是编译异常,请在执行gradle命令时,加上--stacktrace; 2. 日志我们需要过滤"Tinker."关键字; 3. 对于合成失败的情况,请给出:patch进程的日志,这里需要将Android Moniter右上角设为No Filter。 ```

## Issue/提问须知 **在提交issue之前,我们应该先查询是否已经有相关的issue以及[常见问题](https://github.com/Tencent/tinker/wiki/Tinker-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。提交issue时,我们需要写明issue的原因,以及编译或运行过程的日志(加载进程以及Patch进程)。issue需要以下面的格式:** ``` 异常类型:app运行时异常/编译异常 手机型号:如:Nexus 5(如是编译异常,则可以不填) 手机系统版本:如:Android 5.0 (如是编译异常,则可以不填) tinker版本:如:1.7.7 gradle版本:如:2.10 是否使用热更新SDK: 如 TinkerPatch SDK 或者 Bugly SDK 系统:如:Mac 堆栈/日志: 1. 如是编译异常,请在执行gradle命令时,加上--stacktrace; 2. 日志我们需要过滤"Tinker."关键字; 3. 对于合成失败的情况,请给出:patch进程的日志,这里需要将Android Moniter右上角设为No Filter。 ```...

异常类型:编译异常(打补丁包报错) 手机型号:- 手机系统版本:- tinker版本:19.14.25.3 gradle版本:AGP 4.2.0,gradle 6.7.1-bin.zip 是否使用热更新SDK: 否 系统:Mac OS 12.6.6 堆栈/日志: 使用官方demo,minsdk=14、23都是正常,但是如果升级minsdk=24,打完bakApk,再打补丁包的时候,就会报错: ``` Execution failed for task ':app:tinkerPatchRelease'. > java.lang.RuntimeException: com.tencent.tinker.android.dex.Dexexception: com.tencent.tinker.android.dex.DexException: Unexpected magic: [100, 101, 120, 10,...

麻烦看看适配文档:https://developer.android.com/about/versions/14/behavior-changes-14?hl=zh-cn#safer-dynamic-code-loading

现在接入,完全是靠猜和试各个版本,虽然有源码,但是demo里的版本也非常老。

``` 异常类型:编译异常 手机型号:- 手机系统版本:- tinker版本:1.9.14.26.3 gradle版本:7.0 是否使用热更新SDK: TinkerPatch SDK 系统:Mac 堆栈/日志: A problem occurred configuring project ':app-dispatch:app'. > Could not resolve all files for configuration ':app-dispatch:app:classpath'. > Could not find...

异常类型:app运行时异常 手机型号:如:小米8se 手机系统版本:如:Android 9.0 tinker版本:如:1.9.13.2 gradle版本:如:5.1 是否使用热更新SDK: Bugly SDK 系统:Mac 有2个问题,第一个问题,360加固之后的,补丁包下发成功,合成也成功,但是有部分代码会导致应用崩溃,但是我并没有修改这个类,或者是我修改的这个类的其他地方,但是这个地方就报错,跟踪了一下发现大部分都是内部类导致的。 堆栈日志: UncaughtException detected: java.lang.IllegalAccessError: Illegal class access: 'com.xx.fyyyyy.fragment.common.FindFragment' attempting to access 'com.xx.fyyyyy.fragment.common.FindFragment$4' (declaration of 'com.xx.fyyyyy.fragment.common.FindFragment' appears in /data/user/0/com.xx.fyyyyy/tinker/patch-1916b28e/dex/changed_classes2.dex.jar) at...

bug

老项目接入tinker,在编译补丁包时报如下异常 java.lang.IndexOutOfBoundsException: index:-1, length=7289 at com.tencent.tinker.android.dex.Dex.checkBounds(Dex.java:159) at com.tencent.tinker.android.dex.Dex.descriptorIndexFromTypeIndex(Dex.java:531) at com.tencent.tinker.android.dex.Dex$TypeIndexToDescriptorTable.get(Dex.java:905) at com.tencent.tinker.android.dex.Dex$TypeIndexToDescriptorTable.get(Dex.java:902) at com.tencent.tinker.build.util.DexClassesComparator.isSameClassDesc(DexClassesComparator.java:631) at com.tencent.tinker.build.util.DexClassesComparator.isSameClass(DexClassesComparator.java:556) at com.tencent.tinker.build.util.DexClassesComparator.startCheck(DexClassesComparator.java:257) at com.tencent.tinker.build.util.DexClassesComparator.startCheck(DexClassesComparator.java:165) at com.tencent.tinker.build.decoder.DexDiffDecoder.checkDexChange(DexDiffDecoder.java:809) at com.tencent.tinker.build.decoder.DexDiffDecoder.diffDexPairAndFillRelatedInfo(DexDiffDecoder.java:672) at com.tencent.tinker.build.decoder.DexDiffDecoder.generatePatchedDexInfoFile(DexDiffDecoder.java:614) at com.tencent.tinker.build.decoder.DexDiffDecoder.generatePatchInfoFile(DexDiffDecoder.java:533) at com.tencent.tinker.build.decoder.DexDiffDecoder.onAllPatchesEnd(DexDiffDecoder.java:251)...

android app构建升级到R8后,由于applymapping不能保证正确(即基础包和补丁包变量和方法名称不能维持一样),导致tinker补丁变大,也会导致有做补丁失败的风险。 tinker有什么好的处理办法吗?