You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 3D中无法移除SCHEDULE_EXACT_ALARM与USE_EXACT_ALARM权限求助

排查方案:构建阶段动态添加权限未按预期移除的问题

1. 清理构建缓存

构建阶段的脚本输出可能被缓存留存,先彻底清理后重新构建:

  • 执行Gradle命令:./gradlew clean build --no-build-cache
  • 在Android Studio中点击File > Invalidate Caches... > Invalidate and Restart

2. 验证构建脚本的条件变量取值

构建阶段代码无法断点,但可以通过日志确认变量是否符合预期:

  • 在权限添加逻辑的代码块前后加入日志输出,比如Gradle脚本中:
    println "DEBUG: 当前设置开关状态:${yourSettingVariable}"
    if (yourSettingVariable) {
        // 添加权限的逻辑
        println "DEBUG: 已添加精确闹钟权限"
    } else {
        println "DEBUG: 未添加精确闹钟权限"
    }
    
  • 执行构建命令,查看控制台日志,确认变量是否和你设置的禁用状态一致。

3. 检查合并后的Manifest

权限可能来自其他依赖或模块,并非你的脚本添加:

  • 打开app > Build > Outputs > Manifests目录,找到对应构建变体的merged_manifest.xml
  • 搜索SCHEDULE_EXACT_ALARM和USE_EXACT_ALARM,查看权限的tools:node属性及来源(注释会标注来自哪个库或Manifest文件)

4. 确认构建变体的配置

如果存在多Flavor或多Build Type,可能当前构建的变体未正确禁用设置:

  • 检查build.gradle中对应变体的配置,确认开关变量在该变体下是否设为false,比如:
    productFlavors {
        free {
            buildConfigField "boolean", "ENABLE_EXACT_ALARM", "false"
        }
        paid {
            buildConfigField "boolean", "ENABLE_EXACT_ALARM", "true"
        }
    }
    
  • 确认当前构建的是禁用权限的变体。

5. 补全权限移除逻辑

如果脚本仅处理添加逻辑,未处理移除,之前添加的权限不会自动消失:

  • 确保开关禁用时,脚本通过tools:node="remove"移除权限,比如在Gradle中配置占位符:
    android {
        defaultConfig {
            manifestPlaceholders = [removeExactAlarmPermissions: "false"]
        }
        productFlavors {
            disabledAlarm {
                manifestPlaceholders = [removeExactAlarmPermissions: "true"]
            }
        }
    }
    
  • 然后在Manifest中对应权限标签添加占位符:
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" tools:node="${removeExactAlarmPermissions}" />
    <uses-permission android:name="android.permission.USE_EXACT_ALARM" tools:node="${removeExactAlarmPermissions}" />
    

内容的提问来源于stack exchange,提问作者Yurii Zabotkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:37:17