开发者社区> 问答> 正文

请问我在生成补丁时没有勾选强制冷启动,代码的改变也只是一个textView的文本修改,为什么最终补丁

请问我在生成补丁时没有勾选强制冷启动,代码的改变也只是一个textView的文本修改,为什么最终补丁下载合并后还是必须冷启动才能生效呢?

展开
收起
雪哥哥 2022-11-05 21:49:48 342 0
1 条回答
写回答
取消 提交回答
  • 热修复正式接入后checklist

    1,是否混淆,若有混淆 必须-printmapping mapping.txt,发布版本后妥善保存代码和mapping.txt,不能修改。 2,是否加固,加固需要保存加固前的apk,并且若是梆梆加固,需配置忽略sophix文件夹 3,是否关闭资源优化 gradle.properties 中新增android.enableResourceOptimizations=false。 若资源优化开启,会导致代码比对异常,导致加载补丁时某些资源找不到 4,SophixStubApplication 类必须是java原生的,且不应与项目中的其他类有任何互相调用的逻辑,必须完全做到隔离。 且初始化时候不要判断进程 5,queryAndLoadNewPatch()是判断&请求新补丁发的方法,该方法会读取设备信息,请在隐私判断之后调用。 sdk其他代码不会涉及隐私合规问题。最新SDK版本是3.3.7。 6,必须采用稳健接入 https://help.aliyun.com/document_detail/434883.html

    热修复更新补丁时checklist

    1、四大组件不能新增。AndroidManifest.xml,SophixStubApplication.java,build.gradle中的代码不能修改。 通知栏图标、启动图标资源以及RemoteViews等系统负责展示的资源也不能修改 2、如果使用了混淆,新包-apply旧包的mapping.txt文件。确保新旧包混淆规则一致 3、如果使用了加固,打包使用的新旧包必须是加固前的正常包。若是梆梆加固,需配置忽略sophix文件夹 4、如果有SO库的修复,确保所需要修复的SO都是以System.loadLibrary的方式,而不是以具体路径的方式进行加载。 asset资源和so文件的修改,最好配合代码修改:比如在调用处加一句log。以使修改生效。 5、基础包,修复包,补丁包,三个版本号必须一致。如果基础包修改了代码后在其他渠道发布,则建议升级版本号,否则它加载了基础包生成的补丁会报错。 6、使用和同一个打包机来生成基础包和修复包, 打包机的更换可能导致apk代码对比出错 7、补丁发布推荐流程 https://help.aliyun.com/document_detail/434868.html 8、running.log 是生成补丁时的代码对比log,其中的diff项目对应您的代码差异项, 发补丁前请检查此项是否符合预期,如果差异项过多或者只修改了一点代码但是补丁包很大的情况,请检查以上list

    如果您排查热修复补丁问题,请提供:是否开启了混淆,是否加固,是否关闭了资源优化。基础包和修复包打包电脑,Java版本,AS版本,编译配置是否均一致?

    2022-11-07 13:42:45
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
问答排行榜
最热
最新

相关电子书

更多
APP加固新方向 --混淆和瘦身 立即下载
APP加固新方向-混淆和瘦身 立即下载
面向失败设计 立即下载