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

使用jadx反编译时AndroidManifest移除的权限仍显示问题求助

权限残留问题:tools:node="remove"未生效的原因及解决办法

可能的原因及对应解决方法

  • 未引入tools命名空间
    这是最容易忽略的细节:如果AndroidManifest.xml根<manifest>标签里没声明tools命名空间,所有带tools前缀的属性都会被系统忽略。检查并补充命名空间声明:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="你的应用包名">
    
  • 单个remove无法覆盖所有来源的权限
    这些权限大概率是第三方依赖库的Manifest文件带入的,仅用tools:node="remove"只能移除当前Manifest中主动声明的权限,无法清除依赖库引入的权限。换成tools:node="removeAll"强制移除所有来源的对应权限:

    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" tools:node="removeAll" />
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" tools:node="removeAll" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" tools:node="removeAll"/>
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:node="removeAll"/>
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" tools:node="removeAll"/>
    
  • 编译缓存导致旧配置残留
    Gradle的构建缓存可能保留了旧的Manifest合并结果,清理后重新构建即可:

    • Android Studio操作:顶部菜单栏点击 Build -> Clean Project,完成后再点击 Build -> Rebuild Project
    • 命令行操作:执行 ./gradlew clean assembleRelease(根据你的打包需求,将Release替换为Debug等变体)
  • 依赖库带入权限未被处理
    可以先定位权限来源:执行 ./gradlew 你的模块名:mergeReleaseManifest(比如app模块就是app:mergeReleaseManifest),然后去构建目录找到合并后的Manifest文件(路径一般为模块名/build/intermediates/merged_manifests/变体名/AndroidManifest.xml),查看权限对应的android:origin属性,就能知道是哪个依赖库引入的。
    除了用removeAll,也可以在依赖声明时排除该库的权限,但这种方式通用性不如removeAll:

    implementation('com.example.library:xxx:1.0.0') {
        exclude group: 'com.android.support', module: 'support-v4' // 示例,实际根据权限来源调整
    }
    
  • 多渠道/产品风味的Manifest覆盖
    如果应用使用了产品风味(productFlavors)或多渠道打包,每个风味的Manifest可能单独声明了这些权限,需要确保每个风味的Manifest也添加了removeAll,或者在主Manifest中用removeAll强制覆盖所有风味的配置。

验证方法

不要只依赖jadx的结果,建议直接解压APK,取出里面的AndroidManifest.xml(二进制格式,可使用AXMLPrinter2等工具转换为可读文本),确认权限是否真的残留,避免jadx缓存导致的误判。

内容的提问来源于stack exchange,提问作者Adriano Araujo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:48:29