[flutter_tools] move gradle helper methods into AndroidBuilder class body, split unit tests (#75931)
This commit is contained in:
@@ -6,21 +6,15 @@
|
||||
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import '../android/gradle_errors.dart';
|
||||
import '../base/context.dart';
|
||||
import '../base/file_system.dart';
|
||||
import '../build_info.dart';
|
||||
import '../globals.dart' as globals;
|
||||
import '../project.dart';
|
||||
import 'gradle.dart';
|
||||
|
||||
/// The builder in the current context.
|
||||
AndroidBuilder get androidBuilder {
|
||||
return context.get<AndroidBuilder>() ?? const _AndroidBuilderImpl();
|
||||
return context.get<AndroidBuilder>();
|
||||
}
|
||||
|
||||
/// Provides the methods to build Android artifacts.
|
||||
// TODO(egarciad): https://github.com/flutter/flutter/issues/43863
|
||||
abstract class AndroidBuilder {
|
||||
const AndroidBuilder();
|
||||
/// Builds an AAR artifact.
|
||||
@@ -46,89 +40,3 @@ abstract class AndroidBuilder {
|
||||
@required String target,
|
||||
});
|
||||
}
|
||||
|
||||
/// Default implementation of [AarBuilder].
|
||||
class _AndroidBuilderImpl extends AndroidBuilder {
|
||||
const _AndroidBuilderImpl();
|
||||
|
||||
/// Builds the AAR and POM files for the current Flutter module or plugin.
|
||||
@override
|
||||
Future<void> buildAar({
|
||||
@required FlutterProject project,
|
||||
@required Set<AndroidBuildInfo> androidBuildInfo,
|
||||
@required String target,
|
||||
@required String outputDirectoryPath,
|
||||
@required String buildNumber,
|
||||
}) async {
|
||||
try {
|
||||
Directory outputDirectory =
|
||||
globals.fs.directory(outputDirectoryPath ?? project.android.buildDirectory);
|
||||
if (project.isModule) {
|
||||
// Module projects artifacts are located in `build/host`.
|
||||
outputDirectory = outputDirectory.childDirectory('host');
|
||||
}
|
||||
for (final AndroidBuildInfo androidBuildInfo in androidBuildInfo) {
|
||||
await buildGradleAar(
|
||||
project: project,
|
||||
androidBuildInfo: androidBuildInfo,
|
||||
target: target,
|
||||
outputDirectory: outputDirectory,
|
||||
buildNumber: buildNumber,
|
||||
);
|
||||
}
|
||||
printHowToConsumeAar(
|
||||
buildModes: androidBuildInfo
|
||||
.map<String>((AndroidBuildInfo androidBuildInfo) {
|
||||
return androidBuildInfo.buildInfo.modeName;
|
||||
}).toSet(),
|
||||
androidPackage: project.manifest.androidPackage,
|
||||
repoDirectory: getRepoDirectory(outputDirectory),
|
||||
buildNumber: buildNumber,
|
||||
logger: globals.logger,
|
||||
fileSystem: globals.fs,
|
||||
);
|
||||
} finally {
|
||||
globals.androidSdk?.reinitialize();
|
||||
}
|
||||
}
|
||||
|
||||
/// Builds the APK.
|
||||
@override
|
||||
Future<void> buildApk({
|
||||
@required FlutterProject project,
|
||||
@required AndroidBuildInfo androidBuildInfo,
|
||||
@required String target,
|
||||
}) async {
|
||||
try {
|
||||
await buildGradleApp(
|
||||
project: project,
|
||||
androidBuildInfo: androidBuildInfo,
|
||||
target: target,
|
||||
isBuildingBundle: false,
|
||||
localGradleErrors: gradleErrors,
|
||||
);
|
||||
} finally {
|
||||
globals.androidSdk?.reinitialize();
|
||||
}
|
||||
}
|
||||
|
||||
/// Builds the App Bundle.
|
||||
@override
|
||||
Future<void> buildAab({
|
||||
@required FlutterProject project,
|
||||
@required AndroidBuildInfo androidBuildInfo,
|
||||
@required String target,
|
||||
}) async {
|
||||
try {
|
||||
await buildGradleApp(
|
||||
project: project,
|
||||
androidBuildInfo: androidBuildInfo,
|
||||
target: target,
|
||||
isBuildingBundle: true,
|
||||
localGradleErrors: gradleErrors,
|
||||
);
|
||||
} finally {
|
||||
globals.androidSdk?.reinitialize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,9 +8,11 @@ import 'dart:async';
|
||||
|
||||
import 'package:process/process.dart';
|
||||
|
||||
import 'android/android_builder.dart';
|
||||
import 'android/android_sdk.dart';
|
||||
import 'android/android_studio.dart';
|
||||
import 'android/android_workflow.dart';
|
||||
import 'android/gradle.dart';
|
||||
import 'android/gradle_utils.dart';
|
||||
import 'application_package.dart';
|
||||
import 'artifacts.dart';
|
||||
@@ -77,6 +79,7 @@ Future<T> runInContext<T>(
|
||||
body: runnerWrapper,
|
||||
overrides: overrides,
|
||||
fallbacks: <Type, Generator>{
|
||||
AndroidBuilder: () => AndroidGradleBuilder(),
|
||||
AndroidLicenseValidator: () => AndroidLicenseValidator(
|
||||
operatingSystemUtils: globals.os,
|
||||
platform: globals.platform,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user