Seb*_* LG 3 permissions android automated-tests
这是问题的根源:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
debug { debuggable true }
)adb shell pm grant com.myapp.name android.permission.ACCESS_MOCK_LOCATION
命令的结果为:
不允许的操作:java.lang.SecurityException:权限android.permission.ACCESS_MOCK_LOCATION不是可更改的权限类型”
如果我转到手机上的开发人员选项并进行设置Setting >> Developer Option >> Select Mock location app
。
我需要进行自动测试,因此显然进入电话设置的选项无效,因为在每次安装该应用程序时都会重置该选项,因此我需要adb选项才能工作。
我在Calabash修复程序中找到了针对同一问题的解决方案:https : //github.com/calabash/calabash-android/commit/b31be97953325383b9295ff52234a0121cc27e27
adb shell appops set com.myapp.name 58 allow
Run Code Online (Sandbox Code Playgroud)
要从gradle中自动执行此操作,可以将命令添加到安装任务中:
def adb = android.getAdbExe().toString()
tasks.whenTaskAdded { task ->
if (task.name.startsWith('install')) {
task.doLast {
android.applicationVariants.all { variant ->
"${adb} devices".execute().text.eachLine {
if (it.endsWith("device")) {
def device = it.split()[0]
println "Granting test permissions on device ${device}\n"
"${adb} shell appops set ${variant.applicationId} 58 allow".execute()
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是您必须在connectedTest任务之前明确调用安装任务,例如:
gradlew installMyAppDebug connectedMyAppDebugAndroidTest
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2118 次 |
最近记录: |