uni-app iOS平台出现闪退问题,闪退位置在[PGDeviceStatus getCurrentType]
uni-app iOS平台出现闪退问题,闪退位置在[PGDeviceStatus getCurrentType]
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 12.3 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:12.3
HBuilderX类型:正式
HBuilderX版本号:3.3.13
手机系统:iOS
手机系统版本号:iOS 15
手机厂商:苹果
手机机型:iphone 13
页面类型:vue
vue版本:vue2
打包方式:离线
项目创建方式:HBuilderX
### 操作步骤:
闪退日志未能复现
### 预期结果:
避免闪退
### 实际结果:
有闪退
### bug描述:
跟踪 iOS 闪退日志,大多数闪退都出现在 [PGDeviceStatus getCurrentType:] 位置,而且从 离线 SDK 3.2.3 到目前的 3.3.13 都一致存在,不太清楚这个函数作用,这个是核心 PDRCore 库里的封装,猜测对应的是 plus.networkinfo.getCurrentType() ,尝试切换网络,关闭网络,都没能复现这个闪退。
官方应该很容易知道函数作用,比我们瞎猜容易解决多了,离线包对应的 bundle,相关库肯定啥都不缺了。
请官方看一下,之前也反应过,期待有个回复,貌似社区不是太活跃

看下这边哪里用到 plus.networkinfo.getCurrentType() 这个API了 截图看下怎么调用的
我仅是自己猜测的,代码里没有使用
你这个还有更详细的崩溃信息吗 或者可以复现的步骤?
复现不出来,是app store 后台的奔溃日志,这个在 uniapp PDRCore里的,除了上面截图的,也找不到啥相信信息了
我今天又统计了下,这个 [PGDeviceStatus getCurrentType:] 的奔溃占比,可以达到70%, 大多数奔溃都是这个问题。希望官方能跟进下这个问题。
@DCloud_heavensoft @DCloud_IOS_XTY @DCloud_iOS_DJX @DCloud_iOS_XHY
看下私信
同样的问题,线上近期的这种崩溃日志很多,而且我的离线打包,从3.3.13后都没办法获取到推送的个推设备id了,hook代码发现之前个推初始化的方法3.3.13后都没初始化,你有这个问题么
貌似crash 数量又翻了一倍
每周发现都有些新增,耐心等待官方反馈中 …
方便的话 发个ipa给我吧
回复 DCloud_iOS_WZT: 下载地址已发私信
在uni-app开发中,iOS平台出现闪退问题,且闪退位置在 [PGDeviceStatus getCurrentType]
,可能是由于以下几种原因导致的。以下是一些排查和解决的步骤:
1. 检查插件或模块的兼容性
PGDeviceStatus
可能是某个原生插件或模块的一部分,检查是否有使用到第三方原生插件。- 确保插件或模块的版本与当前 uni-app 和 iOS SDK 版本兼容。
- 如果插件是自定义开发的,检查
getCurrentType
方法的实现,确保没有内存泄漏或空指针异常。
2. 检查权限配置
- 某些设备状态信息(如网络状态、电池状态等)需要特定的权限。检查
Info.plist
文件中是否配置了必要的权限。 - 例如,如果插件需要访问网络状态,确保
NSLocalNetworkUsageDescription
等权限已配置。
3. 调试日志
- 在 Xcode 中运行项目,查看控制台输出的详细日志,定位具体的崩溃原因。
- 如果崩溃是由于空对象或异常引起的,日志中通常会有明确的提示。
4. 更新 uni-app 和相关依赖
- 确保 uni-app 的版本是最新的,旧版本可能存在已知的兼容性问题。
- 更新所有依赖的插件和模块到最新版本。
5. 检查代码逻辑
- 如果
getCurrentType
方法被频繁调用,可能会导致性能问题或崩溃。检查调用频率,优化代码逻辑。 - 确保在调用
getCurrentType
之前,相关对象已正确初始化。
6. 测试设备环境
- 测试不同 iOS 版本和设备型号,确认是否只在特定环境下崩溃。
- 如果崩溃仅发生在某些设备上,可能是设备特定的问题。
7. 联系插件开发者
- 如果问题无法解决,联系插件的开发者或社区,提供详细的崩溃日志和复现步骤,寻求帮助。
8. 临时解决方案
- 如果问题无法立即解决,可以尝试注释掉相关代码,或者使用其他方式替代
getCurrentType
的功能。
示例代码(调试日志)
在 Xcode 中运行项目后,查看控制台日志,定位崩溃的具体原因:
// 示例:在 PGDeviceStatus.m 中添加调试日志
- (NSString *)getCurrentType {
NSLog(@"Entering getCurrentType");
// 检查对象是否为空
if (!self) {
NSLog(@"self is nil");
return nil;
}
// 其他逻辑
return @"Unknown";
}