uni-app 云打包生成app后,检测出Android漏洞 禁止对私有Activity设置launchMode属性

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

uni-app 云打包生成app后,检测出Android漏洞 禁止对私有Activity设置launchMode属性

操作步骤:

  • 禁止对私有Activity设置launchMode属性

预期结果:

  • 禁止对私有Activity设置launchMode属性

实际结果:

  • 禁止对私有Activity设置launchMode属性

bug描述:

Image

信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win10
HBuilderX类型 正式
HBuilderX版本 4.36
手机系统 Android
手机系统版本 Android 12
手机厂商 华为
手机机型 华为 nov
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

2 回复

功能需求上必须设置launchMode,否则应用无法正常运行


在处理uni-app云打包生成的Android应用时,如果检测到“禁止对私有Activity设置launchMode属性”的漏洞,这通常是因为在AndroidManifest.xml中错误地为某些Activity设置了launchMode属性。在Android开发中,私有Activity(通常是第三方库或框架内部的Activity)不应该由开发者直接修改其属性,因为这可能会导致应用崩溃或不符合预期的行为。

为了解决这个问题,我们需要确保不直接修改私有Activity的launchMode属性。在uni-app中,通常通过manifest.json文件配置AndroidManifest.xml的相关内容。以下是一个示例,展示如何在不直接修改私有Activity属性的情况下,通过配置manifest.json来安全地处理Activity的启动模式。

示例代码

  1. 检查并修改manifest.json

    首先,打开你的uni-app项目中的manifest.json文件。

  2. 定位到Android平台配置

    manifest.json中,找到mp-weixinapp-plush5等节点下的android平台配置部分。

  3. 配置Activity的launchMode(仅针对自定义Activity)

    确保你只为你自己的Activity设置launchMode。例如,如果你有一个自定义的MainActivity,你可以这样配置:

    "android": {
        "permissions": [],
        "compileOptions": {
            "debuggable": false
        },
        "distribute": {
            // 分发配置...
        },
        "launchMode": "singleTask", // 注意:这是全局设置,通常不推荐,应具体到每个Activity
        "app-plus": {
            "usingComponents": true,
            "distribute": {
                // 分发平台配置...
            },
            "activities": [
                {
                    "name": ".MainActivity",
                    "theme": "@style/AppTheme",
                    "launchMode": "singleTask" // 只为自定义Activity设置
                }
            ]
        }
    }
    

    注意:上面的launchMode全局设置(在android层级下)是一个示例,通常不推荐这样做,因为它会影响所有Activity。正确的做法是在activities数组中为具体的Activity设置launchMode

  4. 避免修改私有Activity

    确保你没有在activities数组中添加或修改任何私有Activity的launchMode属性。

  5. 重新打包

    保存manifest.json文件后,使用uni-app的云打包功能重新生成你的Android应用。

通过上述步骤,你应该能够解决“禁止对私有Activity设置launchMode属性”的漏洞问题,同时确保你的应用按预期运行。

回到顶部