添加日志后AppCenter中Android应用发布版本数小时后消失,寻求排查
AppCenter发布版本消失问题排查与解决
可能原因及对应方案
1. 日志Property长度超限
AppCenter对崩溃报告的Property有明确长度限制:单个key最多128字符,单个value最多1024字符。如果你的日志Property中包含超长内容(比如genericMultiLangField1这类字段可能存储大段文本),会导致报告上传失败,甚至触发AppCenter的异常处理逻辑,间接影响版本状态展示。
- 解决:
- 逐个检查所有Property的key和value长度,对超长内容做截断处理(比如将value限制在1000字符以内);
- 简化key的命名,避免过于冗长的字段名。
2. 自定义UncaughtThreadHandler与AppCenter冲突
如果自定义的UncaughtThreadHandler没有正确将异常传递给AppCenter的默认处理器,会导致AppCenter无法正常捕获崩溃数据,进而影响版本的统计与状态判定。
- 解决:
- 确保自定义Handler处理完日志后,调用AppCenter的默认异常处理器,示例代码调整如下:
// 先保存AppCenter注册的默认异常处理器 val defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler() Thread.setDefaultUncaughtExceptionHandler { thread, throwable -> // 执行自定义日志记录逻辑 val properties = hashMapOf( "Situation" to "contentList is null! Error in playing content: found nothing to play!", "Class Name" to this.javaClass.name, "state.selectedStation?.title" to state.selectedStation?.title, "state.selectedStation?.id" to state.selectedStation?.id?.toString(), "state.selectedStation?.genericMultiLangField1" to state.selectedStation?.genericMultiLangField1?.take(1000), // 截断超长内容 "Device Unique ID" to (application as GeoMuseumApplication).deviceUniqueId, "User Chosen Language" to SessionSettings.language, "LastAudioPlayedOnThisScreen" to relativeHref, "state.selectedStation?.contentList.isNull ?" to (state.selectedStation?.contentList == null).toString() ) Crashes.trackError(NullPointerException("Cause: state.selectedStation?.contentList.isNullOrEmpty()"), properties, null) // 将异常传递给默认处理器(保证AppCenter能捕获到崩溃) defaultUncaughtHandler?.uncaughtException(thread, throwable) }
- 确认AppCenter初始化顺序:要在设置自定义Handler之前完成AppCenter的初始化,确保其异常处理器被正确注册。
3. 自动发布流程隐性失败
版本消失可能和AppCenter的自动发布流水线有关:合并PR触发的发布任务可能存在隐性失败(比如签名错误、包大小超限、合规检查不通过等),虽然日志显示版本曾上线,但后续被自动回滚。
- 解决:查看AppCenter的Build和Release历史,检查发布任务的详细日志,定位是否有未被察觉的错误提示。
4. AppCenter版本展示缓存或状态异常
Release板块的显示可能存在缓存,或者版本被误标记为草稿、未完成状态。
- 解决:手动刷新Release页面,查看版本的详细状态,确认是真的被移除还是仅显示问题。
内容的提问来源于stack exchange,提问作者Ali Has
相关产品推荐
相关产品推荐

