执行tinkerPatch过程中提示找不到CON.png(句柄无效)
异常类型:执行tinkerPatchRelease过程中提示找不到CON.png(句柄无效)
手机型号:
手机系统版本:
tinker版本:v1.9.14.24
gradle版本:v7.2.0 apg:7.1.2
是否使用热更新SDK: TinkerPatch SDK
系统:windows
堆栈/日志:
```gradle升级至7.2,正常执行tinkerPatchChannel_baiduRelease task,期间报错,提示找不到资源文件(CON.png)
原因:
gradle4.2之后的版本默认打开资源混淆优化,资源名称可能被缩减为CON.png/AUX.xml,其中CON/AUX等为windows系统保留关键字,在做差分时无法从output文件夹下面复制到tinker的备份目录,报错信息如下
Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: F:\Project\Application\12.0.0\Application\app\build\tmp\tinkerPatch\app-channel_baidu-release-old\res\CON.png (句柄无效。)
at com.tencent.tinker.build.patch.Runner.goToError(Runner.java:101)
at com.tencent.tinker.build.patch.Runner.tinkerPatch(Runner.java:81)
at com.tencent.tinker.build.patch.Runner.run(Runner.java:53)
at com.tencent.tinker.build.patch.Runner.gradleRun(Runner.java:46)
at com.tencent.tinker.build.patch.Runner$gradleRun.call(Unknown Source)
at com.tencent.tinker.build.gradle.task.TinkerPatchSchemaTask.tinkerPatch(TinkerPatchSchemaTask.groovy:160)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:502)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:487)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:470)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:106)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:271)
at
遇到同样的问题+1,debug包不混淆就没问题
gradle.properties android.enableResourceOptimizations=false
gradle.properties android.enableResourceOptimizations=false
”The option setting 'android.enableResourceOptimizations=false' is deprecated. The current default is 'true'. It will be removed in version 8.0 of the Android Gradle plugin.” 这个配置过时了
gradle.properties android.enableResourceOptimizations=false
”The option setting 'android.enableResourceOptimizations=false' is deprecated. The current default is 'true'. It will be removed in version 8.0 of the Android Gradle plugin.” 这个配置过时了
但是题主所用的版本是7的 我想这个目前对于题主是有帮助的 目前出现这个的原因就是资源被混淆了