我正在尝试写 integration_test
对于我的位置应用程序。我需要允许来自我的 integration_test 的位置许可。
我设置了ANDROID_SDK_ROOT
在我的 Windows 环境变量中。我已经从命令提示符和 Android Studio 终端进行了测试,两者都显示良好。 https://i.ibb.co/4gDPs3Z/echo-android-sdk-root.jpg
不幸的是,我收到了 ANDROID_SDK_ROOT
值(value) null
来自 Platform.environment
.我已附上屏幕截图 https://i.ibb.co/t2Y3fBc/android-sdk-root-not-found.jpg
如果我硬编码 envVars
到我的 windows 机器的 android 位置 C:/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe
,然后它抛出错误No such file or directory Command: C:/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe shell pm grant com.dealerapp.mlink android.permission.ACCESS_COARSE_LOCATION
下面是我的源代码
Future<void> grantLocationPermission() async{
final Map<String, String> envVars = Platform.environment;
print('evnVars = $envVars');
print('ANDROID_SDK_ROOT = ${envVars['ANDROID_SDK_ROOT']}');
final String adbPath = envVars['ANDROID_SDK_ROOT']! + '/platform-tools/adb.exe';
await Process.run(adbPath, [
'shell',
'pm',
'grant',
'com.abcd.efgh', //my app package
'android.permission.ACCESS_COARSE_LOCATION'
]);
await Process.run(adbPath, [
'shell',
'pm',
'grant',
'com.abcd.efgh', //my app package
'android.permission.ACCESS_FINE_LOCATION'
]);
await integrationDriver();
}
任何建议将不胜感激。提前致谢。
最佳答案
这将不起作用,因为 envVars 将为您提供执行它的系统的环境变量。而且由于您在模拟器中执行,因此平台是 Android [ print(Platform.isAndroid)
看看]
此外,如果您调试,您将看到未设置环境变量。
正如您可能已经想到的那样,集成测试无法与原生弹出窗口交互。所以以下是我发现解决这个问题的唯一方法
Future<void> main() async {
await Process.run(
'adb',
[
'shell',
'pm',
'grant',
'com.example.<your app name>', // TODO: Update this
'android.permission.ACCESS_COARSE_LOCATION'
],
);
// TODO: Add more permissions as required
await integrationDriver();
}
flutter drive --driver=test_driver/integration_test_driver.dart --target=integration_test/app_test.dart
adb shell pm revoke com.example.aries_fe android.permission.ACCESS_COARSE_LOCATION
tester.tapAt(const Offset(x,y))
在你的测试中笔记:
adb shell pm grant com.example.<your app name> android.permission.ACCESS_COARSE_LOCATION
flutter test integration_test/login_test.dart
setUpApp()
也不起作用。 关于android - 来自集成测试的 flutter 位置权限不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71597057/