Flutter test finished with error: ProcessException: Permission denied
Flutter test finished with error: ProcessException: Permission denied
我正在尝试 运行 在我的设备上进行端到端测试,因此我必须请求许可才能通过 adb 访问位置
当我 运行 来自终端的命令按预期工作但是当 dart:io 正在执行时它会抛出此异常(并且每个 adb 命令都相同)
环境:
- MacOs
- Android工作室
代码:
void main() {
group('Testing full app flow', () {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() async {
await Process.run('adb' , ['shell' ,'pm', 'grant', 'com.MYSERVICE', 'android.permission.ACCESS_FINE_LOCATION']);
});
testWidgets('test the password input on real device/emulator', (tester) async {
//TESTS
});
});
}
我想出了如何正确地制作它:
现在 adb 命令需要在驱动程序中,因为测试是 运行ning 在设备上(显然它不能 adb 本身)
应该是这样的:
import 'dart:io';
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() async {
await Process.run('adb' , ['shell' ,'pm', 'grant', 'com.myapp','android.permission.ACCESS_FINE_LOCATION']);
await Process.run('adb' , ['shell' ,'pm', 'grant', 'com.myapp','android.permission.ACCESS_COARSE_LOCATION']);
await integrationDriver();
}
如此处所述:https://github.com/flutter/flutter/issues/12561
我暂时没有在 iOS 上完成,但稍后会更新
PS : 运行 命令仍然是 :
颤动驱动
--driver=integration_test/driver.dart
--target=integration_test/app_test.dart
-d 设备
但Flutter_blue仍然认为蓝牙已禁用
尝试使用超级用户:
sudo flutter run
我正在尝试 运行 在我的设备上进行端到端测试,因此我必须请求许可才能通过 adb 访问位置 当我 运行 来自终端的命令按预期工作但是当 dart:io 正在执行时它会抛出此异常(并且每个 adb 命令都相同)
环境:
- MacOs
- Android工作室
代码:
void main() {
group('Testing full app flow', () {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() async {
await Process.run('adb' , ['shell' ,'pm', 'grant', 'com.MYSERVICE', 'android.permission.ACCESS_FINE_LOCATION']);
});
testWidgets('test the password input on real device/emulator', (tester) async {
//TESTS
});
});
}
我想出了如何正确地制作它: 现在 adb 命令需要在驱动程序中,因为测试是 运行ning 在设备上(显然它不能 adb 本身)
应该是这样的:
import 'dart:io';
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() async {
await Process.run('adb' , ['shell' ,'pm', 'grant', 'com.myapp','android.permission.ACCESS_FINE_LOCATION']);
await Process.run('adb' , ['shell' ,'pm', 'grant', 'com.myapp','android.permission.ACCESS_COARSE_LOCATION']);
await integrationDriver();
}
如此处所述:https://github.com/flutter/flutter/issues/12561
我暂时没有在 iOS 上完成,但稍后会更新
PS : 运行 命令仍然是 :
颤动驱动
--driver=integration_test/driver.dart
--target=integration_test/app_test.dart
-d 设备
但Flutter_blue仍然认为蓝牙已禁用
尝试使用超级用户:
sudo flutter run