开发者社区> 问答> 正文

请问一下应用研发平台EMAS,Android App 使用移动热修复后,启动崩溃,是什么原因?

请问一下应用研发平台EMAS,Android App 使用移动热修复后,启动崩溃,报错 NoClassDefFoundError,是什么原因?

展开
收起
真的很搞笑 2023-09-13 19:02:03 78 0
2 条回答
写回答
取消 提交回答
  • 在应用研发平台 EMAS 中,Android App 使用移动热修复(HotFix)功能后出现 NoClassDefFoundError 崩溃错误,可能是以下几个原因导致的:

    1. 类加载问题:NoClassDefFoundError 错误通常意味着某个类在运行时无法找到。这可能是由于类加载顺序的问题引起的,即某个类在热修复补丁中被引用,但在运行时无法正确加载。

    2. 热修复补丁错误:如果热修复补丁文件中存在问题或不完整,可能会导致类文件缺失或损坏,从而触发 NoClassDefFoundError 错误。请确保热修复补丁文件正确生成并上传至 EMAS 控制台。

    3. 混淆问题:如果您的 App 使用了代码混淆(ProGuard),请确保热修复补丁中涉及的类和方法已经正确地配置在混淆规则中,以避免被误删或重命名。

    解决此问题的步骤如下:

    1. 检查类加载和依赖关系:检查在热修复补丁中所引用的类是否能够正确加载,并确保依赖的库和类存在且可访问。

    2. 检查热修复补丁:确认您的热修复补丁文件是否完整并正确上传到 EMAS 控制台。可以尝试重新生成和上传补丁,然后重新运行 App。

    3. 调整混淆规则:如果您使用了代码混淆,请确保热修复补丁中涉及的类和方法已经正确配置在混淆规则中,以免被混淆删除或重命名。

    4. 日志调试:通过查看日志来定位具体的错误信息和堆栈轨迹,以便更精确地确定问题所在。

    2023-09-15 11:34:27
    赞同 展开评论 打赏
  • "https://help.aliyun.com/document_detail/469916.html
    热修复正式接入后CheckList:
    检查是否混淆,若有混淆必须-printmapping mapping.txt,发布版本后妥善保存代码和mapping.txt,不能修改。
    检查是否加固,加固需要保存加固前的apk,并且若是梆梆加固,需配置忽略sophix文件夹。
    检查是否关闭了资源优化:即在gradle.properties中新增android.enableResourceOptimizations=false。若资源优化开启,会导致代码比对异常,导致加载补丁时某些资源找不到。
    SophixStubApplication 类必须是java原生的,且不应与项目中的其他类有任何互相调用的逻辑,必须完全做到隔离。另外初始化时候不要判断进程。
    queryAndLoadNewPatch()是判断&请求新补丁发的方法,该方法会读取设备信息,请在隐私判断之后调用。SDK其他代码不会涉及隐私合规问题。最新SDK版本是3.3.7。
    必须采用稳健接入,具体请参考SDK稳健接入
    热修复更新补丁时CheckList:
    四大组件不能新增。AndroidManifest.xml,SophixStubApplication.java,build.gradle中的代码不能修改。
    通知栏图标、启动图标资源以及RemoteViews等系统负责展示的资源也不能修改。
    如果使用了混淆,新包-apply旧包的mapping.txt文件。确保新旧包混淆规则一致。
    如果使用了加固,打包使用的新旧包必须是加固前的正常包。若是梆梆加固,需配置忽略sophix文件夹。
    如果有SO库的修复,确保所需要修复的SO都是以System.loadLibrary的方式,而不是以具体路径的方式进行加载。
    asset资源和so文件的修改,最好配合代码修改:比如在调用处加一句log。以使修改生效。
    基础包、修复包、补丁包三个版本号必须一致。如果基础包修改了代码后在其他渠道发布,则建议升级版本号,否则它加载了基础包生成的补丁会报错。
    使用和同一个打包机来生成基础包和修复包, 打包机的更换可能导致apk代码对比出错。
    请参考补丁发布推荐流程操作。
    running.log 是生成补丁时的代码对比log,其中的diff项目对应您的代码差异项。
    发补丁前请检查此项是否符合预期,如果差异项过多或者只修改了一点代码但是补丁包很大的情况,请检查以上List。,此回答整理自钉群“应用研发平台EMAS开发者交流群”"

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

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载