uni-app 小程序SDK加个推push SDK导致个推卓信SDK崩溃
uni-app 小程序SDK加个推push SDK导致个推卓信SDK崩溃
操作步骤:
- 使用uni小程序SDK集成个推·推送push SDK,后台长时间运行超过1天
预期结果:
- 不报错
实际结果:
- 主进程奔溃报错
bug描述:
- 使用uni小程序SDK集成个推·推送push SDK,在后台运行超过1天至2天导致卓信SDK奔溃报错,单独集成uni小程序或者单独使用个推推送SDK均不会报错。
异常进程#线程
com.xxxxxx.xx(2014)#ZX-Api-Thread(2313)
使用时长
7 小时 55 分 43 秒
前后台状态
后台
设备机型
V2245A
系统版本
Android 13,level 33
ROM
vivo/FUNTOUCH
CPU架构
arm64-v8a
# ZX-Api-Thread(2313)
SIGABRT
解析原始
1
#00 pc 0000000000053754 /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) [arm64-v8a::f9c21d1d2aa3bf967b5bb504ba7fd764]
2
#01 pc 00000000004688a0 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::AddGlobalRef(art::Thread*, art::ObjPtr<art::mirror::Object>)+672) [arm64-v8a::23a44aacd362d3397fa451a604daa51b]
3
#02 pc 000000000047a074 /apex/com.android.art/lib64/libart.so (art::JNI<false>::NewGlobalRef(_JNIEnv*, _jobject*)+660) [arm64-v8a::23a44aacd362d3397fa451a604daa51b]
4
#03 pc 000000000000cc0c /data/app/~~X9yGsy26E86c9bhvV9Zrvw==/com.yidont.foot.bath-OFfmk6NVtfvfnaM4ULcvEQ==/lib/arm64/libzxprotect.so [arm64-v8a::199c561a38c1f577687ec6cdff503c9b]
5
#04 pc 000000000000cc70 /data/app/~~X9yGsy26E86c9bhvV9Zrvw==/com.yidont.foot.bath-OFfmk6NVtfvfnaM4ULcvEQ==/lib/arm64/libzxprotect.so [arm64-v8a::199c561a38c1f577687ec6cdff503c9b]
6
#05 pc 000000000001f4d8 /data/app/~~X9yGsy26E86c9bhvV9Zrvw==/com.yidont.foot.bath-OFfmk6NVtfvfnaM4ULcvEQ==/lib/arm64/libzxprotect.so (Java_com_zx_a_I8b7_j_a__Ljava_lang_String_2Z+744) [arm64-v8a::199c561a38c1f577687ec6cdff503c9b]
7
#06 pc 00000000002546a4 /data/app/~~X9yGsy26E86c9bhvV9Zrvw==/com.yidont.foot.bath-OFfmk6NVtfvfnaM4ULcvEQ==/oat/arm64/base.odex [arm64-v8a::34612911bcb44d71be5364b7a52dd38f]
3 回复
在使用 uni-app 开发小程序时,如果集成了个推(Getui)的 Push SDK 后导致卓信 SDK 崩溃,可能是由于以下几个原因引起的。以下是一些排查和解决问题的步骤:
1. SDK 版本兼容性问题
- 问题描述:个推 SDK 和卓信 SDK 可能存在版本不兼容的情况,导致冲突或崩溃。
- 解决方案:
- 确保使用的个推 SDK 和卓信 SDK 是最新版本。
- 检查个推和卓信官方文档,确认是否有已知的兼容性问题。
- 如果问题仍然存在,尝试降级或升级其中一个 SDK 的版本。
2. SDK 初始化顺序问题
- 问题描述:如果个推 SDK 和卓信 SDK 的初始化顺序不正确,可能会导致资源冲突或崩溃。
- 解决方案:
- 确保在
App.vue
或main.js
中正确初始化 SDK,按照官方文档推荐的顺序进行初始化。 - 例如,先初始化卓信 SDK,再初始化个推 SDK,或者反之。
- 确保在
3. SDK 配置冲突
- 问题描述:个推 SDK 和卓信 SDK 可能使用了相同的资源或配置项,导致冲突。
- 解决方案:
- 检查两个 SDK 的配置文件(如
manifest.json
或app.json
),确保没有重复的配置项。 - 如果存在冲突,尝试修改配置或联系 SDK 官方技术支持。
- 检查两个 SDK 的配置文件(如
4. 内存或资源不足
- 问题描述:小程序的内存或资源有限,同时集成多个 SDK 可能导致内存不足或崩溃。
- 解决方案:
- 优化代码,减少不必要的资源占用。
- 使用小程序开发者工具的性能分析工具,检查内存和资源使用情况。
5. SDK 冲突日志分析
- 问题描述:崩溃可能是由于 SDK 内部的冲突或错误引起的。
- 解决方案:
- 使用小程序开发者工具的日志功能,查看崩溃时的详细日志。
- 根据日志信息,定位问题并联系个推或卓信的技术支持。
6. 测试环境问题
- 问题描述:开发环境或测试环境的问题可能导致 SDK 崩溃。
- 解决方案:
- 确保开发环境和测试环境的配置正确。
- 尝试在真机上进行测试,排除模拟器或开发工具的问题。
7. 联系官方技术支持
- 如果以上方法无法解决问题,建议联系个推和卓信的官方技术支持,提供详细的日志和复现步骤,以便他们协助排查问题。
示例代码(初始化顺序)
// App.vue
export default {
onLaunch() {
// 先初始化卓信 SDK
initZhuoxinSDK();
// 再初始化个推 SDK
initGetuiSDK();
}
}