1***@qq.com
1***@qq.com
  • 发布:2023-04-20 18:10
  • 更新:2023-07-06 18:22
  • 阅读:455

【报Bug】uni-app离线打包,用android studio运行调试,打包APK之后,卡在启动页无法进入APP。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.7.13

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: HONOR 50 SE

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
<template>  
    <view class="start" :style="{'width':bgWidth,'height':bgHeight}">  
        <view class="start_flex text-center">  
            <view class="flex row-center" style="padding-top: 300px;">  
                <view class="flex-none">  
                    <u-image src="../../static/app_logo.png" width="100px" height="100px"></u-image>  
                </view>  
            </view>  
            <view class="flex row-center m-t-60">  
                <view class="flex-none">  
                    <u-image src="../../static/start/start_text.png" width="300px" height="30px"></u-image>  
                </view>  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    import {connectWebSocket} from "@/common/websocket/useSocket.js";  
    import {mapState,mapMutations} from 'vuex'  
    export default {  
        computed:{  
            ...mapState(['$systemInfo','$userTables','$Socket'])   
        },  
        data() {  
            return {  
                bgWidth:'',  
                bgHeight:''  
            }  
        },  
        onLoad() {  
            this.bgWidth=this.$systemInfo.windowWidth+'px';  
            this.bgHeight=this.$systemInfo.windowHeight+'px';  
            //this.check();  
            this.getDb();  
        },  
        methods: {  
            async getDb(){  
                var dbResult = await this.$sqlDb.isHasDb();  
                if(dbResult.ok){  
                    var result = await this.$sqlDb.openOrCreate();  
                    if(result.ok){  
                        this.check();  
                    }  
                }  
            },  
            check(){  
                var token=uni.getStorageSync('qianhe_im_token');  
                if(token){  
                    this.$http(this.$api.check_login).then(async res=>{  
                        if(res.data.is_login){  
                            this.$store.commit('setUserInfo', res.data.user);  
                            for (var i=0;i<this.$userTables.length;i++) {  
                                var tabsName=this.$userTables[i].name+res.data.id;  
                                var table = await this.$sqlDb.isHasTable(tabsName);  
                                if(!table.isHasTable){  
                                    //不存在表  
                                    var create = await this.$sqlDb.createTable(tabsName,this.$userTables[i].colum);  
                                }  
                            }  
                            connectWebSocket();  
                            this.$Socket.eventPatch.onOpen((msg,sk)=>{        //监听是否连接成功  
                                this.$store.commit('setIsLogin',2);  
                                //获取离线消息  
                                var user={  
                                    id:res.data.id  
                                }  
                                //获取本地数据库未读消息和离线消息  
                                var cacheTime = uni.getStorageSync('chat_cache_time_'+res.data.id);  
                                console.log('启动页');  
                                console.log(cacheTime);  
                                if(cacheTime){  
                                    //判断当前日期和记录时间之差,是否超过后台配置的缓存时间  
                                    //如果超过,则情况所有数据库  
                                    this.$http(this.$api.platform_config).then(async result=>{  
                                        if(result.code==200){  
                                            var nowTime=new Date().getTime();  
                                            console.log(nowTime);  
                                            var number=(nowTime-cacheTime)/1000  
                                            console.log(number);  
                                            console.log(result.data.clear_chatlog_time);  
                                            if(number>result.data.clear_chatlog_time){  
                                                for (var i=0;i<this.$userTables.length;i++) {  
                                                    var tableName=this.$userTables[i].name+user.id;  
                                                    var result = await this.$sqlDb.clearData(tableName);  
                                                }  
                                                uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }else{  
                                                console.log('清除聊天缓存时间没过期');  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }  
                                        }else{  

                                        }  
                                    })  
                                }else{  
                                    uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                    this.$sqlDb.getHistoryAndOffline(user.id);  
                                }  
                                //关闭其他页面,进入url页面  
                                if(res.data.is_teenager==0){  
                                    this.$u.sleep(1500).then(res=>{  
                                        uni.switchTab({  
                                            url:'/pages/tabbar/home/home'   
                                        });  
                                    })  
                                }else{  
                                    this.$u.sleep(1500).then(res=>{  
                                        this.$u.route({  
                                            url:'pages/user/setting_page/teenagers/teenagers',  
                                            type:'reLaunch'  
                                        })  
                                    })  
                                }  
                            });  
                        }else{  
                            uni.setStorageSync('qianhe_im_token','');  
                            this.$u.sleep(1500).then(res=>{  
                                this.$u.route({  
                                    url:'pages/login/login',  
                                    type:'reLaunch'  
                                })  
                            })  
                        }  
                    })  
                }else{  
                    this.$u.sleep(1500).then(res=>{  
                        this.$u.route({  
                            url:'pages/login/login',  
                            type:'reLaunch'  
                        })  
                    })  
                }  
            }  
        }  
    }  
</script>  

<style lang="scss">  
    .start{  
        background-image: url('../../static/start/start_bg.png');  
        background-repeat: no-repeat;  
        background-size: 100% 100%;  
        .start_flex{  
            height: 100%;  
            width: 100%;  
        }  
    }  
</style>

操作步骤:
<template>  
    <view class="start" :style="{'width':bgWidth,'height':bgHeight}">  
        <view class="start_flex text-center">  
            <view class="flex row-center" style="padding-top: 300px;">  
                <view class="flex-none">  
                    <u-image src="../../static/app_logo.png" width="100px" height="100px"></u-image>  
                </view>  
            </view>  
            <view class="flex row-center m-t-60">  
                <view class="flex-none">  
                    <u-image src="../../static/start/start_text.png" width="300px" height="30px"></u-image>  
                </view>  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    import {connectWebSocket} from "@/common/websocket/useSocket.js";  
    import {mapState,mapMutations} from 'vuex'  
    export default {  
        computed:{  
            ...mapState(['$systemInfo','$userTables','$Socket'])   
        },  
        data() {  
            return {  
                bgWidth:'',  
                bgHeight:''  
            }  
        },  
        onLoad() {  
            this.bgWidth=this.$systemInfo.windowWidth+'px';  
            this.bgHeight=this.$systemInfo.windowHeight+'px';  
            //this.check();  
            this.getDb();  
        },  
        methods: {  
            async getDb(){  
                var dbResult = await this.$sqlDb.isHasDb();  
                if(dbResult.ok){  
                    var result = await this.$sqlDb.openOrCreate();  
                    if(result.ok){  
                        this.check();  
                    }  
                }  
            },  
            check(){  
                var token=uni.getStorageSync('qianhe_im_token');  
                if(token){  
                    this.$http(this.$api.check_login).then(async res=>{  
                        if(res.data.is_login){  
                            this.$store.commit('setUserInfo', res.data.user);  
                            for (var i=0;i<this.$userTables.length;i++) {  
                                var tabsName=this.$userTables[i].name+res.data.id;  
                                var table = await this.$sqlDb.isHasTable(tabsName);  
                                if(!table.isHasTable){  
                                    //不存在表  
                                    var create = await this.$sqlDb.createTable(tabsName,this.$userTables[i].colum);  
                                }  
                            }  
                            connectWebSocket();  
                            this.$Socket.eventPatch.onOpen((msg,sk)=>{        //监听是否连接成功  
                                this.$store.commit('setIsLogin',2);  
                                //获取离线消息  
                                var user={  
                                    id:res.data.id  
                                }  
                                //获取本地数据库未读消息和离线消息  
                                var cacheTime = uni.getStorageSync('chat_cache_time_'+res.data.id);  
                                console.log('启动页');  
                                console.log(cacheTime);  
                                if(cacheTime){  
                                    //判断当前日期和记录时间之差,是否超过后台配置的缓存时间  
                                    //如果超过,则情况所有数据库  
                                    this.$http(this.$api.platform_config).then(async result=>{  
                                        if(result.code==200){  
                                            var nowTime=new Date().getTime();  
                                            console.log(nowTime);  
                                            var number=(nowTime-cacheTime)/1000  
                                            console.log(number);  
                                            console.log(result.data.clear_chatlog_time);  
                                            if(number>result.data.clear_chatlog_time){  
                                                for (var i=0;i<this.$userTables.length;i++) {  
                                                    var tableName=this.$userTables[i].name+user.id;  
                                                    var result = await this.$sqlDb.clearData(tableName);  
                                                }  
                                                uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }else{  
                                                console.log('清除聊天缓存时间没过期');  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }  
                                        }else{  

                                        }  
                                    })  
                                }else{  
                                    uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                    this.$sqlDb.getHistoryAndOffline(user.id);  
                                }  
                                //关闭其他页面,进入url页面  
                                if(res.data.is_teenager==0){  
                                    this.$u.sleep(1500).then(res=>{  
                                        uni.switchTab({  
                                            url:'/pages/tabbar/home/home'   
                                        });  
                                    })  
                                }else{  
                                    this.$u.sleep(1500).then(res=>{  
                                        this.$u.route({  
                                            url:'pages/user/setting_page/teenagers/teenagers',  
                                            type:'reLaunch'  
                                        })  
                                    })  
                                }  
                            });  
                        }else{  
                            uni.setStorageSync('qianhe_im_token','');  
                            this.$u.sleep(1500).then(res=>{  
                                this.$u.route({  
                                    url:'pages/login/login',  
                                    type:'reLaunch'  
                                })  
                            })  
                        }  
                    })  
                }else{  
                    this.$u.sleep(1500).then(res=>{  
                        this.$u.route({  
                            url:'pages/login/login',  
                            type:'reLaunch'  
                        })  
                    })  
                }  
            }  
        }  
    }  
</script>  

<style lang="scss">  
    .start{  
        background-image: url('../../static/start/start_bg.png');  
        background-repeat: no-repeat;  
        background-size: 100% 100%;  
        .start_flex{  
            height: 100%;  
            width: 100%;  
        }  
    }  
</style>

预期结果:
<template>  
    <view class="start" :style="{'width':bgWidth,'height':bgHeight}">  
        <view class="start_flex text-center">  
            <view class="flex row-center" style="padding-top: 300px;">  
                <view class="flex-none">  
                    <u-image src="../../static/app_logo.png" width="100px" height="100px"></u-image>  
                </view>  
            </view>  
            <view class="flex row-center m-t-60">  
                <view class="flex-none">  
                    <u-image src="../../static/start/start_text.png" width="300px" height="30px"></u-image>  
                </view>  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    import {connectWebSocket} from "@/common/websocket/useSocket.js";  
    import {mapState,mapMutations} from 'vuex'  
    export default {  
        computed:{  
            ...mapState(['$systemInfo','$userTables','$Socket'])   
        },  
        data() {  
            return {  
                bgWidth:'',  
                bgHeight:''  
            }  
        },  
        onLoad() {  
            this.bgWidth=this.$systemInfo.windowWidth+'px';  
            this.bgHeight=this.$systemInfo.windowHeight+'px';  
            //this.check();  
            this.getDb();  
        },  
        methods: {  
            async getDb(){  
                var dbResult = await this.$sqlDb.isHasDb();  
                if(dbResult.ok){  
                    var result = await this.$sqlDb.openOrCreate();  
                    if(result.ok){  
                        this.check();  
                    }  
                }  
            },  
            check(){  
                var token=uni.getStorageSync('qianhe_im_token');  
                if(token){  
                    this.$http(this.$api.check_login).then(async res=>{  
                        if(res.data.is_login){  
                            this.$store.commit('setUserInfo', res.data.user);  
                            for (var i=0;i<this.$userTables.length;i++) {  
                                var tabsName=this.$userTables[i].name+res.data.id;  
                                var table = await this.$sqlDb.isHasTable(tabsName);  
                                if(!table.isHasTable){  
                                    //不存在表  
                                    var create = await this.$sqlDb.createTable(tabsName,this.$userTables[i].colum);  
                                }  
                            }  
                            connectWebSocket();  
                            this.$Socket.eventPatch.onOpen((msg,sk)=>{        //监听是否连接成功  
                                this.$store.commit('setIsLogin',2);  
                                //获取离线消息  
                                var user={  
                                    id:res.data.id  
                                }  
                                //获取本地数据库未读消息和离线消息  
                                var cacheTime = uni.getStorageSync('chat_cache_time_'+res.data.id);  
                                console.log('启动页');  
                                console.log(cacheTime);  
                                if(cacheTime){  
                                    //判断当前日期和记录时间之差,是否超过后台配置的缓存时间  
                                    //如果超过,则情况所有数据库  
                                    this.$http(this.$api.platform_config).then(async result=>{  
                                        if(result.code==200){  
                                            var nowTime=new Date().getTime();  
                                            console.log(nowTime);  
                                            var number=(nowTime-cacheTime)/1000  
                                            console.log(number);  
                                            console.log(result.data.clear_chatlog_time);  
                                            if(number>result.data.clear_chatlog_time){  
                                                for (var i=0;i<this.$userTables.length;i++) {  
                                                    var tableName=this.$userTables[i].name+user.id;  
                                                    var result = await this.$sqlDb.clearData(tableName);  
                                                }  
                                                uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }else{  
                                                console.log('清除聊天缓存时间没过期');  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }  
                                        }else{  

                                        }  
                                    })  
                                }else{  
                                    uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                    this.$sqlDb.getHistoryAndOffline(user.id);  
                                }  
                                //关闭其他页面,进入url页面  
                                if(res.data.is_teenager==0){  
                                    this.$u.sleep(1500).then(res=>{  
                                        uni.switchTab({  
                                            url:'/pages/tabbar/home/home'   
                                        });  
                                    })  
                                }else{  
                                    this.$u.sleep(1500).then(res=>{  
                                        this.$u.route({  
                                            url:'pages/user/setting_page/teenagers/teenagers',  
                                            type:'reLaunch'  
                                        })  
                                    })  
                                }  
                            });  
                        }else{  
                            uni.setStorageSync('qianhe_im_token','');  
                            this.$u.sleep(1500).then(res=>{  
                                this.$u.route({  
                                    url:'pages/login/login',  
                                    type:'reLaunch'  
                                })  
                            })  
                        }  
                    })  
                }else{  
                    this.$u.sleep(1500).then(res=>{  
                        this.$u.route({  
                            url:'pages/login/login',  
                            type:'reLaunch'  
                        })  
                    })  
                }  
            }  
        }  
    }  
</script>  

<style lang="scss">  
    .start{  
        background-image: url('../../static/start/start_bg.png');  
        background-repeat: no-repeat;  
        background-size: 100% 100%;  
        .start_flex{  
            height: 100%;  
            width: 100%;  
        }  
    }  
</style>

实际结果:
<template>  
    <view class="start" :style="{'width':bgWidth,'height':bgHeight}">  
        <view class="start_flex text-center">  
            <view class="flex row-center" style="padding-top: 300px;">  
                <view class="flex-none">  
                    <u-image src="../../static/app_logo.png" width="100px" height="100px"></u-image>  
                </view>  
            </view>  
            <view class="flex row-center m-t-60">  
                <view class="flex-none">  
                    <u-image src="../../static/start/start_text.png" width="300px" height="30px"></u-image>  
                </view>  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    import {connectWebSocket} from "@/common/websocket/useSocket.js";  
    import {mapState,mapMutations} from 'vuex'  
    export default {  
        computed:{  
            ...mapState(['$systemInfo','$userTables','$Socket'])   
        },  
        data() {  
            return {  
                bgWidth:'',  
                bgHeight:''  
            }  
        },  
        onLoad() {  
            this.bgWidth=this.$systemInfo.windowWidth+'px';  
            this.bgHeight=this.$systemInfo.windowHeight+'px';  
            //this.check();  
            this.getDb();  
        },  
        methods: {  
            async getDb(){  
                var dbResult = await this.$sqlDb.isHasDb();  
                if(dbResult.ok){  
                    var result = await this.$sqlDb.openOrCreate();  
                    if(result.ok){  
                        this.check();  
                    }  
                }  
            },  
            check(){  
                var token=uni.getStorageSync('qianhe_im_token');  
                if(token){  
                    this.$http(this.$api.check_login).then(async res=>{  
                        if(res.data.is_login){  
                            this.$store.commit('setUserInfo', res.data.user);  
                            for (var i=0;i<this.$userTables.length;i++) {  
                                var tabsName=this.$userTables[i].name+res.data.id;  
                                var table = await this.$sqlDb.isHasTable(tabsName);  
                                if(!table.isHasTable){  
                                    //不存在表  
                                    var create = await this.$sqlDb.createTable(tabsName,this.$userTables[i].colum);  
                                }  
                            }  
                            connectWebSocket();  
                            this.$Socket.eventPatch.onOpen((msg,sk)=>{        //监听是否连接成功  
                                this.$store.commit('setIsLogin',2);  
                                //获取离线消息  
                                var user={  
                                    id:res.data.id  
                                }  
                                //获取本地数据库未读消息和离线消息  
                                var cacheTime = uni.getStorageSync('chat_cache_time_'+res.data.id);  
                                console.log('启动页');  
                                console.log(cacheTime);  
                                if(cacheTime){  
                                    //判断当前日期和记录时间之差,是否超过后台配置的缓存时间  
                                    //如果超过,则情况所有数据库  
                                    this.$http(this.$api.platform_config).then(async result=>{  
                                        if(result.code==200){  
                                            var nowTime=new Date().getTime();  
                                            console.log(nowTime);  
                                            var number=(nowTime-cacheTime)/1000  
                                            console.log(number);  
                                            console.log(result.data.clear_chatlog_time);  
                                            if(number>result.data.clear_chatlog_time){  
                                                for (var i=0;i<this.$userTables.length;i++) {  
                                                    var tableName=this.$userTables[i].name+user.id;  
                                                    var result = await this.$sqlDb.clearData(tableName);  
                                                }  
                                                uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }else{  
                                                console.log('清除聊天缓存时间没过期');  
                                                this.$sqlDb.getHistoryAndOffline(user.id);  
                                            }  
                                        }else{  

                                        }  
                                    })  
                                }else{  
                                    uni.setStorageSync('chat_cache_time_'+user.id,new Date().getTime())  
                                    this.$sqlDb.getHistoryAndOffline(user.id);  
                                }  
                                //关闭其他页面,进入url页面  
                                if(res.data.is_teenager==0){  
                                    this.$u.sleep(1500).then(res=>{  
                                        uni.switchTab({  
                                            url:'/pages/tabbar/home/home'   
                                        });  
                                    })  
                                }else{  
                                    this.$u.sleep(1500).then(res=>{  
                                        this.$u.route({  
                                            url:'pages/user/setting_page/teenagers/teenagers',  
                                            type:'reLaunch'  
                                        })  
                                    })  
                                }  
                            });  
                        }else{  
                            uni.setStorageSync('qianhe_im_token','');  
                            this.$u.sleep(1500).then(res=>{  
                                this.$u.route({  
                                    url:'pages/login/login',  
                                    type:'reLaunch'  
                                })  
                            })  
                        }  
                    })  
                }else{  
                    this.$u.sleep(1500).then(res=>{  
                        this.$u.route({  
                            url:'pages/login/login',  
                            type:'reLaunch'  
                        })  
                    })  
                }  
            }  
        }  
    }  
</script>  

<style lang="scss">  
    .start{  
        background-image: url('../../static/start/start_bg.png');  
        background-repeat: no-repeat;  
        background-size: 100% 100%;  
        .start_flex{  
            height: 100%;  
            width: 100%;  
        }  
    }  
</style>

bug描述:

uni-app离线打包后,用android调试或者打包APK,卡在启动页,进不去

2023-04-20 18:10 负责人:无 分享
已邀请:
test2023

test2023

你好,这个问题你解决了吗

要回复问题请先登录注册