uni-app 混淆原生js代码导致应用闪退打不开

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 混淆原生js代码导致应用闪退打不开

开发环境 版本号 项目创建方式
Windows Windows10 22H2 HBuilderX
手机系统 版本号
Android Android 14
手机厂商
vivo
手机机型
vivo x90s

示例代码:

"description" : "原生混淆",  
"resources" : {  
    "common/aes.js" : {},  
    "common/cache.js" : {},  
    "common/city.data.js" : {},  
    "common/config.js" : {},  
    "common/constants.js" : {},  
    "common/crypto-js.js" : {},  
    "common/dateUtil.js" : {},  
    "common/graceChecker.js" : {},  
    "common/httpApi.js" : {},  
    "common/httpRequest.js" : {},  
    "common/operatelog.js" : {},  
    "common/pointlog.js" : {},  
    "common/privacy.js" : {},  
    "common/py.js" : {},  
    "common/util.js" : {},  
    "store/modules/user.js" : {},  
    "store/index.js" : {},  
    "plugins/logger.js" : {},  
    "platforms/app-plus/app-login.js" : {},  
    "platforms/wechat/wechat-login.js" : {},  
    "platforms/wechat/weixinJSDK.js" : {},  
    "pages/cmcc-alert/temp-data.js" : {},  
    "util/util.js" : {},  
    "main.js" : {}  
}  

操作步骤:

  • 在manifest.json文件添加需要混淆的js路径,然后使用hbuilderx3.6.18版本进行云端打正式包,然后安装应用点击打开应用,闪退。

预期结果:

  • 预期是安装应用点击打开后授权登录然后正常访问

实际结果:

  • 实际结果是在安装好app之后,点击打开立马闪退

bug描述:

  • 在manifest.json文件里根据官方文档提供的格式对js代码进行混淆,使用云端打包也勾选了“对配置的js文件进行原生混淆”,但是打完正式包并安装使用,在第一次点开应用就会闪退

5 回复

vue页面混淆js是需要vue3才支持的哈(回复已更新)


应该不是这个问题,我今天试过了,单独混淆任意一个js文件都会闪退,肯定是其他的问题

回复 2***@qq.com: 方便发个问题工程吗

回复 HRK_01: 我私信回你

在使用 uni-app 开发应用时,如果对原生 JavaScript 代码进行混淆,可能会导致应用闪退或无法打开。这通常是因为混淆工具对代码进行了不适当的处理,导致以下问题:

1. 混淆工具破坏了关键代码

  • 某些混淆工具可能会错误地修改或删除 uni-app 框架或原生代码中的关键部分,导致应用无法正常运行。
  • 例如,uni-app 依赖的模块、全局变量或方法被混淆后无法正确调用。

2. 混淆后代码体积过大

  • 混淆后的代码可能会导致文件体积增大,尤其是在小程序或 H5 平台上,超过平台限制后会导致闪退或无法加载。

3. 混淆与平台原生代码冲突

  • uni-app 编译后的代码会与原生平台(如微信小程序、Android、iOS 等)进行交互。如果混淆工具对这些交互代码进行了不适当的处理,可能会导致运行时崩溃。

解决方法

1. 检查混淆配置

  • 确保混淆工具的配置不会破坏 uni-app 的核心代码。
  • 在混淆配置中排除 uni-app 框架和必要的全局变量。例如:
    {
        "preserve": ["uni", "require", "exports", "module"]
    }

2. 使用 uni-app 自带的压缩功能

  • uni-app 在打包时默认会对代码进行压缩和优化,通常情况下不需要额外混淆。
  • manifest.json 中开启 minify 选项:
    {
        "app-plus": {
            "optimization": {
                "minify": true
            }
        }
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!