Skip to content

Commit c46d410

Browse files
authored
[ Tool ] Remove support for Android x86 targets (flutter#169884)
Dart x86 is deprecated, no longer shipped, and will eventually be removed from the Dart VM. This PR removes the last remaining x86 target, android-x86, from the tool. Work towards flutter#157543 and flutter#160932
1 parent afd5927 commit c46d410

25 files changed

+18
-445
lines changed

dev/devicelab/bin/tasks/gradle_plugin_fat_apk_test.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,13 @@ Future<void> main() async {
2727
...baseApkFiles,
2828
'lib/armeabi-v7a/libflutter.so',
2929
'lib/arm64-v8a/libflutter.so',
30-
// Debug mode intentionally includes `x86` and `x86_64`.
31-
'lib/x86/libflutter.so',
30+
// Debug mode intentionally includes `x86_64`.
3231
'lib/x86_64/libflutter.so',
3332
], apkFiles);
3433

3534
checkCollectionDoesNotContain<String>(<String>[
3635
'lib/arm64-v8a/libapp.so',
3736
'lib/armeabi-v7a/libapp.so',
38-
'lib/x86/libapp.so',
3937
'lib/x86_64/libapp.so',
4038
], apkFiles);
4139

dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,31 +35,6 @@ Future<void> main() async {
3535
checkCollectionDoesNotContain<String>(<String>[
3636
'lib/arm64-v8a/libapp.so',
3737
'lib/armeabi-v7a/libapp.so',
38-
'lib/x86/libapp.so',
39-
'lib/x86_64/libapp.so',
40-
], apkFiles);
41-
42-
section('APK content for task assembleDebug with target platform = android-x86');
43-
// This is used by `flutter run`
44-
await inDirectory(pluginProject.exampleAndroidPath, () {
45-
return flutter(
46-
'build',
47-
options: <String>['apk', '--debug', '--target-platform=android-x86'],
48-
);
49-
});
50-
51-
apkFiles = await getFilesInApk(pluginProject.debugApkPath);
52-
53-
checkCollectionContains<String>(<String>[
54-
...flutterAssets,
55-
...debugAssets,
56-
...baseApkFiles,
57-
'lib/x86/libflutter.so',
58-
], apkFiles);
59-
60-
checkCollectionDoesNotContain<String>(<String>[
61-
'lib/armeabi-v7a/libapp.so',
62-
'lib/x86/libapp.so',
6338
'lib/x86_64/libapp.so',
6439
], apkFiles);
6540

@@ -84,7 +59,6 @@ Future<void> main() async {
8459

8560
checkCollectionDoesNotContain<String>(<String>[
8661
'lib/armeabi-v7a/libapp.so',
87-
'lib/x86/libapp.so',
8862
'lib/x86_64/libapp.so',
8963
], apkFiles);
9064

packages/flutter_tools/lib/src/android/android_device.dart

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,6 @@ class AndroidDevice extends Device {
207207
}
208208
case 'x86_64':
209209
return TargetPlatform.android_x64;
210-
case 'x86':
211-
return TargetPlatform.android_x86;
212210
default:
213211
return TargetPlatform.android_arm;
214212
}
@@ -221,8 +219,6 @@ class AndroidDevice extends Device {
221219
case TargetPlatform.android_arm64:
222220
case TargetPlatform.android_x64:
223221
return buildMode != BuildMode.jitRelease;
224-
case TargetPlatform.android_x86:
225-
return buildMode == BuildMode.debug;
226222
case TargetPlatform.android:
227223
case TargetPlatform.darwin:
228224
case TargetPlatform.fuchsia_arm64:
@@ -535,10 +531,6 @@ class AndroidDevice extends Device {
535531
}
536532

537533
final TargetPlatform devicePlatform = await targetPlatform;
538-
if (devicePlatform == TargetPlatform.android_x86 && !debuggingOptions.buildInfo.isDebug) {
539-
_logger.printError('Profile and release builds are only supported on ARM/x64 targets.');
540-
return LaunchResult.failed();
541-
}
542534

543535
AndroidApk? builtPackage = package;
544536
AndroidArch androidArch;
@@ -549,8 +541,6 @@ class AndroidDevice extends Device {
549541
androidArch = AndroidArch.arm64_v8a;
550542
case TargetPlatform.android_x64:
551543
androidArch = AndroidArch.x86_64;
552-
case TargetPlatform.android_x86:
553-
androidArch = AndroidArch.x86;
554544
case TargetPlatform.android:
555545
case TargetPlatform.darwin:
556546
case TargetPlatform.fuchsia_arm64:

packages/flutter_tools/lib/src/android/build_validation.dart

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,6 @@ void validateBuild(AndroidBuildInfo androidBuildInfo) {
1818
'--target-platform flag.',
1919
);
2020
}
21-
if (buildInfo.mode.isPrecompiled && androidBuildInfo.targetArchs.contains(AndroidArch.x86)) {
22-
throwToolExit(
23-
'Cannot build ${androidBuildInfo.buildInfo.mode.cliName} mode for x86 ABI.\n'
24-
'For more information see $kSupportedAbis .',
25-
);
26-
}
2721
if (buildInfo.buildNumber != null) {
2822
final int? result = int.tryParse(buildInfo.buildNumber!);
2923
if (result == null) {

packages/flutter_tools/lib/src/android/gradle.dart

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,6 @@ class AndroidGradleBuilder implements AndroidBuilder {
204204
outputDirectory = outputDirectory.childDirectory('host');
205205
}
206206

207-
final bool containsX86Targets =
208-
androidBuildInfo.where((AndroidBuildInfo info) => info.containsX86Target).isNotEmpty;
209-
if (containsX86Targets) {
210-
_logger.printWarning(androidX86DeprecationWarning);
211-
}
212207
for (final AndroidBuildInfo androidBuildInfo in androidBuildInfo) {
213208
await generateTooling(project, releaseMode: androidBuildInfo.buildInfo.isRelease);
214209
await buildGradleAar(
@@ -454,9 +449,6 @@ class AndroidGradleBuilder implements AndroidBuilder {
454449
int retry = 0,
455450
@visibleForTesting int? maxRetries,
456451
}) async {
457-
if (androidBuildInfo.containsX86Target) {
458-
_logger.printWarning(androidX86DeprecationWarning);
459-
}
460452
if (!project.android.isSupportedVersion) {
461453
_exitWithUnsupportedProjectMessage(_logger.terminal, _analytics);
462454
}
@@ -1354,9 +1346,7 @@ Directory _getLocalEngineRepo({
13541346

13551347
String _getAbiByLocalEnginePath(String engineOutPath) {
13561348
String result = 'armeabi_v7a';
1357-
if (engineOutPath.contains('x86')) {
1358-
result = 'x86';
1359-
} else if (engineOutPath.contains('x64')) {
1349+
if (engineOutPath.contains('x64')) {
13601350
result = 'x86_64';
13611351
} else if (engineOutPath.contains('arm64')) {
13621352
result = 'arm64_v8a';
@@ -1366,9 +1356,7 @@ String _getAbiByLocalEnginePath(String engineOutPath) {
13661356

13671357
String _getTargetPlatformByLocalEnginePath(String engineOutPath) {
13681358
String result = 'android-arm';
1369-
if (engineOutPath.contains('x86')) {
1370-
result = 'android-x86';
1371-
} else if (engineOutPath.contains('x64')) {
1359+
if (engineOutPath.contains('x64')) {
13721360
result = 'android-x64';
13731361
} else if (engineOutPath.contains('arm64')) {
13741362
result = 'android-arm64';

packages/flutter_tools/lib/src/artifacts.dart

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ TargetPlatform? _mapTargetPlatform(TargetPlatform? targetPlatform) {
164164
case TargetPlatform.android_arm:
165165
case TargetPlatform.android_arm64:
166166
case TargetPlatform.android_x64:
167-
case TargetPlatform.android_x86:
168167
case null:
169168
return targetPlatform;
170169
}
@@ -511,7 +510,6 @@ class CachedArtifacts implements Artifacts {
511510
case TargetPlatform.android_arm:
512511
case TargetPlatform.android_arm64:
513512
case TargetPlatform.android_x64:
514-
case TargetPlatform.android_x86:
515513
assert(platform != TargetPlatform.android);
516514
return _getAndroidArtifactPath(artifact, platform!, mode!);
517515
case TargetPlatform.ios:
@@ -897,7 +895,6 @@ class CachedArtifacts implements Artifacts {
897895
case TargetPlatform.android_arm:
898896
case TargetPlatform.android_arm64:
899897
case TargetPlatform.android_x64:
900-
case TargetPlatform.android_x86:
901898
assert(mode != null, 'Need to specify a build mode for platform $platform.');
902899
final String suffix = mode != BuildMode.debug ? '-${kebabCase(mode!.cliName)}' : '';
903900
return _fileSystem.path.join(engineDir, platformName + suffix);
@@ -1348,7 +1345,6 @@ class CachedLocalEngineArtifacts implements Artifacts {
13481345
case TargetPlatform.android_arm:
13491346
case TargetPlatform.android_arm64:
13501347
case TargetPlatform.android_x64:
1351-
case TargetPlatform.android_x86:
13521348
case TargetPlatform.fuchsia_arm64:
13531349
case TargetPlatform.fuchsia_x64:
13541350
case TargetPlatform.web_javascript:
@@ -1577,7 +1573,6 @@ class CachedLocalWebSdkArtifacts implements Artifacts {
15771573
case TargetPlatform.android_arm:
15781574
case TargetPlatform.android_arm64:
15791575
case TargetPlatform.android_x64:
1580-
case TargetPlatform.android_x86:
15811576
case TargetPlatform.fuchsia_arm64:
15821577
case TargetPlatform.fuchsia_x64:
15831578
case TargetPlatform.web_javascript:

packages/flutter_tools/lib/src/build_info.dart

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,6 @@ class AndroidBuildInfo {
397397
/// The target platforms for the build.
398398
final Iterable<AndroidArch> targetArchs;
399399

400-
bool get containsX86Target => targetArchs.contains(AndroidArch.x86);
401-
402400
/// Whether to bootstrap an empty application.
403401
final bool fastStart;
404402
}
@@ -477,8 +475,7 @@ String? validatedBuildNumberForPlatform(
477475
}
478476
if (targetPlatform == TargetPlatform.android_arm ||
479477
targetPlatform == TargetPlatform.android_arm64 ||
480-
targetPlatform == TargetPlatform.android_x64 ||
481-
targetPlatform == TargetPlatform.android_x86) {
478+
targetPlatform == TargetPlatform.android_x64) {
482479
// See versionCode at https://developer.android.com/studio/publish/versioning
483480
final RegExp disallowed = RegExp(r'[^\d]');
484481
String tmpBuildNumberStr = buildNumber.replaceAll(disallowed, '');
@@ -530,8 +527,7 @@ String? validatedBuildNameForPlatform(
530527
if (targetPlatform == TargetPlatform.android ||
531528
targetPlatform == TargetPlatform.android_arm ||
532529
targetPlatform == TargetPlatform.android_arm64 ||
533-
targetPlatform == TargetPlatform.android_x64 ||
534-
targetPlatform == TargetPlatform.android_x86) {
530+
targetPlatform == TargetPlatform.android_x64) {
535531
// See versionName at https://developer.android.com/studio/publish/versioning
536532
return buildName;
537533
}
@@ -570,8 +566,7 @@ enum TargetPlatform {
570566
// and [AndroidArch].
571567
android_arm,
572568
android_arm64,
573-
android_x64,
574-
android_x86;
569+
android_x64;
575570

576571
String get fuchsiaArchForTargetPlatform {
577572
switch (this) {
@@ -583,7 +578,6 @@ enum TargetPlatform {
583578
case TargetPlatform.android_arm:
584579
case TargetPlatform.android_arm64:
585580
case TargetPlatform.android_x64:
586-
case TargetPlatform.android_x86:
587581
case TargetPlatform.darwin:
588582
case TargetPlatform.ios:
589583
case TargetPlatform.linux_arm64:
@@ -609,7 +603,6 @@ enum TargetPlatform {
609603
case TargetPlatform.android_arm:
610604
case TargetPlatform.android_arm64:
611605
case TargetPlatform.android_x64:
612-
case TargetPlatform.android_x86:
613606
case TargetPlatform.fuchsia_arm64:
614607
case TargetPlatform.fuchsia_x64:
615608
case TargetPlatform.ios:
@@ -647,21 +640,18 @@ enum DarwinArch {
647640
enum AndroidArch {
648641
armeabi_v7a,
649642
arm64_v8a,
650-
x86,
651643
x86_64;
652644

653645
String get archName => switch (this) {
654646
AndroidArch.armeabi_v7a => 'armeabi-v7a',
655647
AndroidArch.arm64_v8a => 'arm64-v8a',
656648
AndroidArch.x86_64 => 'x86_64',
657-
AndroidArch.x86 => 'x86',
658649
};
659650

660651
String get platformName => switch (this) {
661652
AndroidArch.armeabi_v7a => 'android-arm',
662653
AndroidArch.arm64_v8a => 'android-arm64',
663654
AndroidArch.x86_64 => 'android-x64',
664-
AndroidArch.x86 => 'android-x86',
665655
};
666656
}
667657

@@ -731,7 +721,6 @@ String getNameForTargetPlatform(TargetPlatform platform, {DarwinArch? darwinArch
731721
TargetPlatform.android_arm => 'android-arm',
732722
TargetPlatform.android_arm64 => 'android-arm64',
733723
TargetPlatform.android_x64 => 'android-x64',
734-
TargetPlatform.android_x86 => 'android-x86',
735724
TargetPlatform.linux_x64 => 'linux-x64',
736725
TargetPlatform.linux_arm64 => 'linux-arm64',
737726
TargetPlatform.windows_x64 => 'windows-x64',
@@ -750,7 +739,6 @@ TargetPlatform getTargetPlatformForName(String platform) {
750739
'android-arm' => TargetPlatform.android_arm,
751740
'android-arm64' => TargetPlatform.android_arm64,
752741
'android-x64' => TargetPlatform.android_x64,
753-
'android-x86' => TargetPlatform.android_x86,
754742
'fuchsia-arm64' => TargetPlatform.fuchsia_arm64,
755743
'fuchsia-x64' => TargetPlatform.fuchsia_x64,
756744
'ios' => TargetPlatform.ios,
@@ -772,7 +760,6 @@ AndroidArch getAndroidArchForName(String platform) {
772760
'android-arm' => AndroidArch.armeabi_v7a,
773761
'android-arm64' => AndroidArch.arm64_v8a,
774762
'android-x64' => AndroidArch.x86_64,
775-
'android-x86' => AndroidArch.x86,
776763
_ => throw Exception('Unsupported Android arch name "$platform"'),
777764
};
778765
}

packages/flutter_tools/lib/src/build_system/targets/common.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@ class KernelSnapshot extends Target {
216216
case TargetPlatform.android_arm:
217217
case TargetPlatform.android_arm64:
218218
case TargetPlatform.android_x64:
219-
case TargetPlatform.android_x86:
220219
case TargetPlatform.fuchsia_arm64:
221220
case TargetPlatform.fuchsia_x64:
222221
case TargetPlatform.ios:
@@ -231,8 +230,7 @@ class KernelSnapshot extends Target {
231230
TargetPlatform.android ||
232231
TargetPlatform.android_arm ||
233232
TargetPlatform.android_arm64 ||
234-
TargetPlatform.android_x64 ||
235-
TargetPlatform.android_x86 => 'android',
233+
TargetPlatform.android_x64 => 'android',
236234
TargetPlatform.darwin => 'macos',
237235
TargetPlatform.ios => 'ios',
238236
TargetPlatform.linux_arm64 || TargetPlatform.linux_x64 => 'linux',

packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ class ShaderCompiler {
107107
List<String> _shaderTargetsFromTargetPlatform(TargetPlatform targetPlatform) {
108108
switch (targetPlatform) {
109109
case TargetPlatform.android_x64:
110-
case TargetPlatform.android_x86:
111110
case TargetPlatform.android_arm:
112111
case TargetPlatform.android_arm64:
113112
case TargetPlatform.android:

packages/flutter_tools/lib/src/commands/build_aar.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class BuildAarCommand extends BuildSubCommand {
5353
argParser.addMultiOption(
5454
'target-platform',
5555
defaultsTo: <String>['android-arm', 'android-arm64', 'android-x64'],
56-
allowed: <String>['android-arm', 'android-arm64', 'android-x86', 'android-x64'],
56+
allowed: <String>['android-arm', 'android-arm64', 'android-x64'],
5757
help: 'The target platform for which the project is compiled.',
5858
);
5959
}

packages/flutter_tools/lib/src/commands/build_apk.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class BuildApkCommand extends BuildSubCommand {
5050
)
5151
..addMultiOption(
5252
'target-platform',
53-
allowed: <String>['android-arm', 'android-arm64', 'android-x86', 'android-x64'],
53+
allowed: <String>['android-arm', 'android-arm64', 'android-x64'],
5454
help: 'The target platform for which the app is compiled.',
5555
);
5656
usesTrackWidgetCreation(verboseHelp: verboseHelp);
@@ -72,7 +72,6 @@ class BuildApkCommand extends BuildSubCommand {
7272
static const List<String> _kDefaultJitArchs = <String>[
7373
'android-arm',
7474
'android-arm64',
75-
'android-x86',
7675
'android-x64',
7776
];
7877
static const List<String> _kDefaultAotArchs = <String>[

packages/flutter_tools/lib/src/commands/build_bundle.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class BuildBundleCommand extends BuildSubCommand {
4141
allowed: const <String>[
4242
'android-arm',
4343
'android-arm64',
44-
'android-x86',
4544
'android-x64',
4645
'ios',
4746
'darwin',
@@ -130,7 +129,6 @@ class BuildBundleCommand extends BuildSubCommand {
130129
case TargetPlatform.android_arm:
131130
case TargetPlatform.android_arm64:
132131
case TargetPlatform.android_x64:
133-
case TargetPlatform.android_x86:
134132
case TargetPlatform.fuchsia_arm64:
135133
case TargetPlatform.fuchsia_x64:
136134
case TargetPlatform.ios:

packages/flutter_tools/lib/src/flutter_application_package.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ class FlutterApplicationPackageFactory extends ApplicationPackageFactory {
5454
case TargetPlatform.android_arm:
5555
case TargetPlatform.android_arm64:
5656
case TargetPlatform.android_x64:
57-
case TargetPlatform.android_x86:
5857
if (applicationBinary == null) {
5958
return AndroidApk.fromAndroidProject(
6059
FlutterProject.current().android,

packages/flutter_tools/lib/src/isolated/native_assets/android/native_assets.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ Architecture getNativeAndroidArchitecture(AndroidArch androidArch) {
4646
return switch (androidArch) {
4747
AndroidArch.armeabi_v7a => Architecture.arm,
4848
AndroidArch.arm64_v8a => Architecture.arm64,
49-
AndroidArch.x86 => Architecture.ia32,
5049
AndroidArch.x86_64 => Architecture.x64,
5150
};
5251
}
@@ -56,7 +55,6 @@ AndroidArch _getAndroidArch(Architecture architecture) {
5655
return switch (architecture) {
5756
Architecture.arm => AndroidArch.armeabi_v7a,
5857
Architecture.arm64 => AndroidArch.arm64_v8a,
59-
Architecture.ia32 => AndroidArch.x86,
6058
Architecture.x64 => AndroidArch.x86_64,
6159
Architecture.riscv64 => throwToolExit('Android RISC-V not yet supported.'),
6260
_ => throwToolExit('Invalid architecture: $architecture.'),

0 commit comments

Comments
 (0)