Allow flutter run to run release/profile x64 (#45511)

This commit is contained in:
Jonah Williams 2019-11-25 12:04:17 -08:00 committed by GitHub
parent e6935efdf6
commit 1888fa3526
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 10 deletions

View file

@ -491,10 +491,9 @@ class AndroidDevice extends Device {
}
final TargetPlatform devicePlatform = await targetPlatform;
if (!(devicePlatform == TargetPlatform.android_arm ||
devicePlatform == TargetPlatform.android_arm64) &&
!debuggingOptions.buildInfo.isDebug) {
printError('Profile and release builds are only supported on ARM targets.');
if (devicePlatform == TargetPlatform.android_x86 &&
!debuggingOptions.buildInfo.isDebug) {
printError('Profile and release builds are only supported on ARM/x64 targets.');
return LaunchResult.failed();
}

View file

@ -94,12 +94,19 @@ void main() {
});
group('startApp', () {
final MockAndroidApk mockApk = MockAndroidApk();
final MockProcessManager mockProcessManager = MockProcessManager();
final MockAndroidSdk mockAndroidSdk = MockAndroidSdk();
final MockProcessUtils mockProcessUtils = MockProcessUtils();
MockAndroidApk mockApk;
MockProcessManager mockProcessManager;
MockAndroidSdk mockAndroidSdk;
MockProcessUtils mockProcessUtils;
testUsingContext(' succeeds with --cache-sksl', () async {
setUp(() {
mockApk = MockAndroidApk();
mockProcessManager = MockProcessManager();
mockAndroidSdk = MockAndroidSdk();
mockProcessUtils = MockProcessUtils();
});
testUsingContext('succeeds with --cache-sksl', () async {
const String deviceId = '1234';
final AndroidDevice device = AndroidDevice(deviceId, modelID: 'TestModel');
@ -140,6 +147,41 @@ void main() {
ProcessManager: () => mockProcessManager,
ProcessUtils: () => mockProcessUtils,
});
testUsingContext('can run a release build on x64', () async {
const String deviceId = '1234';
final AndroidDevice device = AndroidDevice(deviceId, modelID: 'TestModel');
final Directory sdkDir = MockAndroidSdk.createSdkDirectory();
Config.instance.setValue('android-sdk', sdkDir.path);
final File adbExe = fs.file(getAdbPath(androidSdk));
when(mockAndroidSdk.licensesAvailable).thenReturn(true);
when(mockAndroidSdk.latestVersion).thenReturn(MockAndroidSdkVersion());
when(mockProcessManager.run(
<String>[adbExe.path, '-s', deviceId, 'shell', 'getprop'],
stdoutEncoding: latin1,
stderrEncoding: latin1,
)).thenAnswer((_) async {
return ProcessResult(0, 0, '[ro.build.version.sdk]: [24]\n[ro.product.cpu.abi]: [x86_64]', '');
});
final LaunchResult launchResult = await device.startApp(
mockApk,
prebuiltApplication: true,
debuggingOptions: DebuggingOptions.disabled(
const BuildInfo(BuildMode.release, null),
),
platformArgs: <String, dynamic>{},
);
expect(launchResult.started, true);
}, overrides: <Type, Generator>{
AndroidSdk: () => mockAndroidSdk,
FileSystem: () => MemoryFileSystem(),
ProcessManager: () => mockProcessManager,
ProcessUtils: () => mockProcessUtils,
});
});
});
@ -378,7 +420,7 @@ Use the 'android' tool to install them:
ProcessManager: () => mockProcessManager
});
testUsingContext('detects kind fire ABI', () async {
testUsingContext('detects kindle fire ABI', () async {
cpu = 'arm64-v8a';
abilist = 'arm';
final AndroidDevice device = AndroidDevice('test');