build aar prints how to consume the artifacts (#44127)
diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
index ae81bdf..55f5977 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -1501,56 +1501,115 @@
ProcessManager: () => mockProcessManager,
});
- testUsingContext('build aar uses selected local engine', () async {
- when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
- platform: TargetPlatform.android_arm, mode: anyNamed('mode'))).thenReturn('engine');
- when(mockArtifacts.engineOutPath).thenReturn(fs.path.join('out', 'android_arm'));
-
- final File manifestFile = fs.file('path/to/project/pubspec.yaml');
+ testUsingContext('indicates how to consume an AAR', () async {
+ final File manifestFile = fs.file('pubspec.yaml');
manifestFile.createSync(recursive: true);
manifestFile.writeAsStringSync('''
- name: test
- version: 1.0.0+1
- dependencies:
- flutter:
- sdk: flutter
flutter:
module:
- androidX: false
androidPackage: com.example.test
- iosBundleIdentifier: com.example.test
'''
);
- final File gradlew = fs.file('path/to/project/.android/gradlew');
- gradlew.createSync(recursive: true);
+ fs.file('.android/gradlew').createSync(recursive: true);
- fs.file('path/to/project/.android/gradle.properties')
+ fs.file('.android/gradle.properties')
.writeAsStringSync('irrelevant');
- fs.file('path/to/project/.android/build.gradle')
+ fs.file('.android/build.gradle')
.createSync(recursive: true);
- when(mockProcessManager.run(
- <String> ['/path/to/project/.android/gradlew', '-v'],
- workingDirectory: anyNamed('workingDirectory'),
- environment: anyNamed('environment'),
- )).thenAnswer(
- (_) async => ProcessResult(1, 0, '5.1.1', ''),
- );
-
- // write schemaData otherwise pubspec.yaml file can't be loaded
- writeEmptySchemaFile(fs);
- fs.currentDirectory = 'path/to/project';
-
// Let any process start. Assert after.
when(mockProcessManager.run(
any,
environment: anyNamed('environment'),
workingDirectory: anyNamed('workingDirectory'),
- )).thenAnswer(
- (_) async => ProcessResult(1, 0, '', ''),
+ )).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
+
+ fs.directory('build/outputs/repo').createSync(recursive: true);
+
+ await buildGradleAar(
+ androidBuildInfo: const AndroidBuildInfo(BuildInfo(BuildMode.release, null)),
+ project: FlutterProject.current(),
+ outputDir: fs.directory('build/'),
+ target: '',
);
+
+ final BufferLogger logger = context.get<Logger>();
+ expect(
+ logger.statusText,
+ contains('Built build/outputs/repo'),
+ );
+ expect(
+ logger.statusText,
+ contains('''
+Consuming the Module
+ 1. Open <host>/app/build.gradle
+ 2. Ensure you have the repositories configured, otherwise add them:
+
+ repositories {
+ maven {
+ url 'build/outputs/repo'
+ }
+ maven {
+ url 'http://download.flutter.io'
+ }
+ }
+
+ 3. Make the host app depend on the release module:
+
+ dependencies {
+ releaseImplementation 'com.example.test:flutter_release:1.0'
+ }
+
+To learn more, visit https://flutter.dev/go/build-aar'''));
+
+ }, overrides: <Type, Generator>{
+ AndroidSdk: () => mockAndroidSdk,
+ AndroidStudio: () => mockAndroidStudio,
+ Artifacts: () => mockArtifacts,
+ Cache: () => cache,
+ Platform: () => android,
+ FileSystem: () => fs,
+ ProcessManager: () => mockProcessManager,
+ });
+
+ testUsingContext('build aar uses selected local engine', () async {
+ when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
+ platform: TargetPlatform.android_arm, mode: anyNamed('mode'))).thenReturn('engine');
+ when(mockArtifacts.engineOutPath).thenReturn(fs.path.join('out', 'android_arm'));
+
+ final File manifestFile = fs.file('pubspec.yaml');
+ manifestFile.createSync(recursive: true);
+ manifestFile.writeAsStringSync('''
+ flutter:
+ module:
+ androidPackage: com.example.test
+ '''
+ );
+
+ final File gradlew = fs.file('.android/gradlew');
+ gradlew.createSync(recursive: true);
+
+ fs.file('.android/gradle.properties')
+ .writeAsStringSync('irrelevant');
+
+ fs.file('.android/build.gradle')
+ .createSync(recursive: true);
+
+ when(mockProcessManager.run(
+ <String> ['.android/gradlew', '-v'],
+ workingDirectory: anyNamed('workingDirectory'),
+ environment: anyNamed('environment'),
+ )).thenAnswer((_) async => ProcessResult(1, 0, '5.1.1', ''));
+
+ // Let any process start. Assert after.
+ when(mockProcessManager.run(
+ any,
+ environment: anyNamed('environment'),
+ workingDirectory: anyNamed('workingDirectory'),
+ )).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
+
fs.directory('build/outputs/repo').createSync(recursive: true);
await buildGradleAar(
@@ -1566,7 +1625,7 @@
workingDirectory: anyNamed('workingDirectory')),
).captured.last;
- expect(actualGradlewCall, contains('/path/to/project/.android/gradlew'));
+ expect(actualGradlewCall, contains('/.android/gradlew'));
expect(actualGradlewCall, contains('-PlocalEngineOut=out/android_arm'));
}, overrides: <Type, Generator>{
AndroidSdk: () => mockAndroidSdk,