uni-app 在iOS上出现 app 闪退

uni-app 在iOS上出现 app 闪退

开发环境 版本号 项目创建方式
Windows 7 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:7

HBuilderX类型:正式

HBuilderX版本号:3.1.2

手机系统:iOS

手机系统版本号:IOS 14

手机厂商:苹果

手机机型:iPhone X

页面类型:vue

打包方式:云端

项目创建方式:HBuilderX

### 示例代码:

首页index.vue部分代码如下:
```js
onLoad() {  
    _self = this;  
    _self.equipID = _self.getClientId();  
    // console.log(_self.equipID, '设备ID')  
},  
onShow() {  

    uni.getStorage({  
        key: 'userInfo',  
        success(res) {  

            var userID = res.data.userID;  
            _self.userID = userID;  
            _self.checkActivation();//检查用户是否激活                    
            _self.checkLevel();//检查用户权益等级  

        },  
        fail() {  
            uni.navigateTo({  
                url: '../login/login'  
            })  
        }  
    })  

},  

App.vue中js没有写功能

<script>  
    export default {  

        onShow: function() {  

        },  
    }  
</script>

### 操作步骤:

app正常使用期间没有任何问题,使用了十几天就会出现闪退,无法进入应用,重新安装再使用十几天又会闪退

预期结果:

无论app使用多久,都不会出现闪退,能够正常进入app


### 实际结果:

app使用了十几天就会出现闪退,无法进入应用,重新安装再使用十几天又会闪退

bug描述:

app在苹果手机上使用一段时间后,一点击进入app就会闪退到桌面


更多关于uni-app 在iOS上出现 app 闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

请问找到原因了吗

更多关于uni-app 在iOS上出现 app 闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你把官方的demo打包一下试试

请问一下解决了吗?遇到了一样的问题,不知道咋排查

根据你描述的情况,iOS应用在使用一段时间后出现闪退,可能是以下几个原因导致的:

  1. 内存泄漏问题:
  • 全局变量_self的使用可能导致内存无法释放
  • 建议改为使用this或组件实例变量
  1. 存储数据问题:
  • uni.getStorage获取的用户数据可能异常
  • 建议增加数据有效性校验
  1. 云端打包问题:
  • 可能是特定iOS版本的兼容性问题
  • 建议尝试本地打包测试
  1. 生命周期管理:
  • onShow中执行的操作可能过于频繁
  • 建议将部分逻辑移到onLoad

建议修改代码:

onLoad() {
    this.equipID = this.getClientId();
    this.initUserData();
},
methods: {
    initUserData() {
        try {
            const res = await uni.getStorage({key: 'userInfo'});
            if(res && res.data) {
                this.userID = res.data.userID;
                this.checkActivation();
                this.checkLevel();
            }
        } catch(e) {
            uni.navigateTo({url: '../login/login'});
        }
    }
}
回到顶部