uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

每次wgt版本升级后第一次打开都会白屏

Open wl386123298 opened this issue 1 year ago • 6 comments

使用场景:离线wgt,基座是android原生,比如 wgt 1.0版本里 pagesA,有个hello word的文本,现在wgt 1.1, pagesA页面加了些其他的功能, apk的升级是覆盖安装,第一次打开pagesA会白屏或者出现一个错误页面,第二次打开则正常显示。请问如何解决?具体详细描述可以参考这个(https://ask.dcloud.net.cn/question/162203)

wl386123298 avatar Jun 29 '24 11:06 wl386123298

怀疑是缓存引起,但是uniapp android sdk提供的api 简直少的可怜

wl386123298 avatar Jun 29 '24 11:06 wl386123298

贴一个我的解决方案把 就官方这个态度,issue 提了那么久都不理,其他的不多说。主要思路就是清理 uniapp 在 Android 本地的缓存 注意:此代码为 android 原生代码,kotlin 实现,不是 js 代码

//找到 uniapp 在 Android 的目录,不同版本的系统这个目录可能不同,但是思路都是一样的
val file = File(requireContext().filesDir, "apps/你的 uniapp 的 id")
 if (file.exists()){
     val isDelSuccess =  FileUtil.deleteDirectoryFiles(file.path)
 }

 /**
     * 删除目录下的文件
     *
     * @param dir
     * 要删除的目录的文件路径
     *
     * @return 目录删除成功返回true,否则返回false
     */
    public fun deleteDirectoryFiles(dir: String): Boolean {
        var path = dir
        // 如果dir不以文件分隔符结尾,自动添加文件分隔符
        if (!path.endsWith(File.separator))
            path += File.separator
        val dirFile = File(path)
        // 如果dir对应的文件不存在,或者不是一个目录,则退出
        if (!dirFile.exists() || !dirFile.isDirectory) {
//            println("删除目录失败:" + dir + "不存在!")
            return false
        }
        var flag = true
        // 删除文件夹中的所有文件包括子目录
        val files = dirFile.listFiles()
        if (files != null && files.isNotEmpty()) {
            for (i in files.indices) {
                // 删除子文件
                if (files[i].isFile) {
                    flag = deleteFile(files[i].absolutePath)
                    if (!flag)
                        break
                } else if (files[i].isDirectory) {
                    flag = deleteDirectory(
                        files[i]
                            .absolutePath
                    )
                    if (!flag)
                        break
                }// 删除子目录
            }
        }
        return flag
    }

wl386123298 avatar Jul 07 '24 08:07 wl386123298

贴一个我的解决方案把 就官方这个态度,issue 提了那么久都不理,其他的不多说。主要思路就是清理 uniapp 在 Android 本地的缓存

//找到 uniapp 在 Android 的目录,不同版本的系统这个目录可能不同,但是思路都是一样的
val file = File(requireContext().filesDir, "apps/你的 uniapp 的 id")
 if (file.exists()){
     val isDelSuccess =  FileUtil.deleteDirectoryFiles(file.path)
 }

 /**
     * 删除目录下的文件
     *
     * @param dir
     * 要删除的目录的文件路径
     *
     * @return 目录删除成功返回true,否则返回false
     */
    public fun deleteDirectoryFiles(dir: String): Boolean {
        var path = dir
        // 如果dir不以文件分隔符结尾,自动添加文件分隔符
        if (!path.endsWith(File.separator))
            path += File.separator
        val dirFile = File(path)
        // 如果dir对应的文件不存在,或者不是一个目录,则退出
        if (!dirFile.exists() || !dirFile.isDirectory) {
//            println("删除目录失败:" + dir + "不存在!")
            return false
        }
        var flag = true
        // 删除文件夹中的所有文件包括子目录
        val files = dirFile.listFiles()
        if (files != null && files.isNotEmpty()) {
            for (i in files.indices) {
                // 删除子文件
                if (files[i].isFile) {
                    flag = deleteFile(files[i].absolutePath)
                    if (!flag)
                        break
                } else if (files[i].isDirectory) {
                    flag = deleteDirectory(
                        files[i]
                            .absolutePath
                    )
                    if (!flag)
                        break
                }// 删除子目录
            }
        }
        return flag
    }

应该没有不理,你发的帖子中就引用了我跟进的一个帖子中给的临时方案。目前已经确定是缓存问题,给出临时方案后已经转给了其他相关人员处理。 你的这个方案是否经过验证,如果验证过的话,我一并转给相关人员参考。

zhetengbiji avatar Jul 08 '24 03:07 zhetengbiji

@zhetengbiji 目前已经验证过了,我们现在就常用这个方法

wl386123298 avatar Jul 09 '24 05:07 wl386123298

@zhetengbiji 目前已经验证过了,我们现在就常用这个方法

这部分逻辑你们是怎么什么时机使用?安装wgt之前吗?

zhetengbiji avatar Jul 09 '24 06:07 zhetengbiji

@zhetengbiji 我们的场景是打包 wgt 解压放assets 里,算是离线了,这部分逻辑放在app 启动的时候,比如启动页或者主页相关的生命周期中判断,比如 onCreate中,我们的项目结构是这样,见下图 0b0ba210941790efaac9fb4ddbf39ef9.png

wl386123298 avatar Jul 09 '24 13:07 wl386123298