add a target for android-x64 (#3224) * add a target for android-x64 * update armeabi-v7a to x86_64
diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index 41b56b6..1c80023 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart
@@ -100,15 +100,17 @@ } else { // We've crashed; emit a log report. stderr.writeln(); - if (error is String) - stderr.writeln('Oops; flutter has exited unexpectedly: "$error".'); - else - stderr.writeln('Oops; flutter has exited unexpectedly.'); if (Platform.environment.containsKey('FLUTTER_DEV')) { - // If we're working in the tools themselves, just print the stack trace. + // If we're working on the tools themselves, just print the stack trace. + stderr.writeln('$error'); stderr.writeln(chain.terse.toString()); } else { + if (error is String) + stderr.writeln('Oops; flutter has exited unexpectedly: "$error".'); + else + stderr.writeln('Oops; flutter has exited unexpectedly.'); + File file = _createCrashReport(args, error, chain); stderr.writeln(
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 424fd3b..14f06b1 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -325,9 +325,8 @@ return runCommandAndStreamOutput(command).then((int exitCode) => exitCode == 0); } - // TODO(devoncarew): Use isLocalEmulator to return android_arm or android_x64. @override - TargetPlatform get platform => TargetPlatform.android_arm; + TargetPlatform get platform => isLocalEmulator ? TargetPlatform.android_x64 : TargetPlatform.android_arm; @override void clearLogs() {
diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart index 8533090..022cbab 100644 --- a/packages/flutter_tools/lib/src/application_package.dart +++ b/packages/flutter_tools/lib/src/application_package.dart
@@ -108,6 +108,7 @@ ApplicationPackage getPackageForPlatform(TargetPlatform platform) { switch (platform) { case TargetPlatform.android_arm: + case TargetPlatform.android_x64: return android; case TargetPlatform.ios: return iOS; @@ -124,6 +125,7 @@ for (BuildConfiguration config in configs) { switch (config.targetPlatform) { case TargetPlatform.android_arm: + case TargetPlatform.android_x64: android ??= new AndroidApk.fromBuildConfiguration(config); break;
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index a9b5a823..69d0f3c 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -23,6 +23,8 @@ switch (platform) { case TargetPlatform.android_arm: return 'android-arm'; + case TargetPlatform.android_x64: + return 'android-x64'; case TargetPlatform.ios: return 'ios'; case TargetPlatform.darwin_x64: @@ -132,6 +134,32 @@ targetPlatform: TargetPlatform.android_arm ), + // android-x86 + const Artifact._( + name: 'Compiled Java code', + fileName: 'classes.dex.jar', + type: ArtifactType.androidClassesJar, + targetPlatform: TargetPlatform.android_x64 + ), + const Artifact._( + name: 'ICU data table', + fileName: 'icudtl.dat', + type: ArtifactType.androidIcuData, + targetPlatform: TargetPlatform.android_x64 + ), + const Artifact._( + name: 'Key Store', + fileName: 'chromium-debug.keystore', + type: ArtifactType.androidKeystore, + targetPlatform: TargetPlatform.android_x64 + ), + const Artifact._( + name: 'Compiled C++ code', + fileName: 'libsky_shell.so', + type: ArtifactType.androidLibSkyShell, + targetPlatform: TargetPlatform.android_x64 + ), + // iOS const Artifact._( name: 'iOS Runner (Xcode Project)',
diff --git a/packages/flutter_tools/lib/src/build_configuration.dart b/packages/flutter_tools/lib/src/build_configuration.dart index 170c4bc..cce4248 100644 --- a/packages/flutter_tools/lib/src/build_configuration.dart +++ b/packages/flutter_tools/lib/src/build_configuration.dart
@@ -21,6 +21,7 @@ enum TargetPlatform { android_arm, + android_x64, ios, darwin_x64, linux_x64
diff --git a/packages/flutter_tools/lib/src/commands/build_apk.dart b/packages/flutter_tools/lib/src/commands/build_apk.dart index 016ca6c..529e913 100644 --- a/packages/flutter_tools/lib/src/commands/build_apk.dart +++ b/packages/flutter_tools/lib/src/commands/build_apk.dart
@@ -209,15 +209,19 @@ } Future<_ApkComponents> _findApkComponents( - BuildConfiguration config, String enginePath, String manifest, String resources + TargetPlatform platform, + BuildConfiguration config, + String enginePath, + String manifest, + String resources ) async { List<String> artifactPaths; if (enginePath != null) { - // TODO(devoncarew): Support x64. + String abiDir = platform == TargetPlatform.android_arm ? 'armeabi-v7a' : 'x86_64'; artifactPaths = [ '$enginePath/third_party/icu/android/icudtl.dat', '${config.buildDir}/gen/sky/shell/shell/classes.dex.jar', - '${config.buildDir}/gen/sky/shell/shell/shell/libs/armeabi-v7a/libsky_shell.so', + '${config.buildDir}/gen/sky/shell/shell/shell/libs/$abiDir/libsky_shell.so', '$enginePath/build/android/ant/chromium-debug.keystore', ]; } else { @@ -283,8 +287,7 @@ _AssetBuilder artifactBuilder = new _AssetBuilder(tempDir, 'artifacts'); artifactBuilder.add(classesDex, 'classes.dex'); - // x86? x86_64? - String abiDir = platform == TargetPlatform.android_arm ? 'armeabi-v7a' : 'x86'; + String abiDir = platform == TargetPlatform.android_arm ? 'armeabi-v7a' : 'x86_64'; artifactBuilder.add(components.libSkyShell, 'lib/$abiDir/libsky_shell.so'); File unalignedApk = new File('${tempDir.path}/app.apk.unaligned'); @@ -413,7 +416,7 @@ } BuildConfiguration config = configs.firstWhere((BuildConfiguration bc) => bc.targetPlatform == platform); - _ApkComponents components = await _findApkComponents(config, enginePath, manifest, resources); + _ApkComponents components = await _findApkComponents(platform, config, enginePath, manifest, resources); if (components == null) { printError('Failure building APK. Unable to find components.');
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart index 63447c7..dead817 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
@@ -275,6 +275,11 @@ targetPlatform: TargetPlatform.android_arm )); + configs.add(new BuildConfiguration.prebuilt( + hostPlatform: hostPlatform, + targetPlatform: TargetPlatform.android_x64 + )); + if (hostPlatform == HostPlatform.linux) { configs.add(new BuildConfiguration.prebuilt( hostPlatform: HostPlatform.linux,