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

如何仅为Android instrumentation test正确添加PACKAGE_USAGE_STATS权限

仅为androidTest添加PACKAGE_USAGE_STATS权限的解决步骤
  • 第一步:移除build.gradle中手动配置的androidTest manifest sourceSet
    AGP 3.0及以上版本默认会自动读取src/androidTest/AndroidManifest.xml文件并和主Manifest合并,手动配置路径极易导致测试Manifest未被正确打包进测试APK,直接删除如下配置即可:
    sourceSets {
        androidTest {
            manifest.srcFile 'src/androidTest/AndroidManifest.xml'
        }
    }
    
  • 第二步:修正androidTest目录下的AndroidManifest.xml配置
    新版AGP使用build.gradle中定义的namespace生成包名,Manifest中手动声明的package属性会被忽略,错误的package声明会导致权限绑定异常,修改后Manifest内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
        <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"
            tools:ignore="ProtectedPermissions" />
    </manifest>
    
  • 第三步:卸载旧的测试包避免缓存冲突
    执行命令卸载已安装的测试包,防止旧版本缓存影响权限声明:
    adb uninstall com.example.dummy.test
    
  • 第四步:重新编译安装测试APK
    重新构建测试包并安装到设备,可直接通过Android Studio运行测试用例触发自动安装,也可手动执行构建命令安装。
  • 第五步:验证权限声明状态
    执行以下命令确认测试包已正确声明该权限:
    adb shell dumpsys package com.example.dummy.test | grep android.permission.PACKAGE_USAGE_STATS
    
    如果输出中包含该权限,说明声明已生效。
  • 第六步:重新执行权限授予命令
    adb shell pm grant com.example.dummy.test android.permission.PACKAGE_USAGE_STATS
    
    此时不会再出现权限未申请的报错,测试应用即可正常使用该权限获取应用运行状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:12:03