mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
fix pom file not found when run app with local engine (#51468)
This commit is contained in:
parent
8df3e057b2
commit
fdbd1b14ff
@ -297,6 +297,13 @@ Future<void> buildGradleApp({
|
||||
command.add('-Plocal-engine-repo=${localEngineRepo.path}');
|
||||
command.add('-Plocal-engine-build-mode=${buildInfo.modeName}');
|
||||
command.add('-Plocal-engine-out=${localEngineArtifacts.engineOutPath}');
|
||||
command.add('-Ptarget-platform=${_getTargetPlatformByLocalEnginePath(
|
||||
localEngineArtifacts.engineOutPath)}');
|
||||
} else if (androidBuildInfo.targetArchs.isNotEmpty) {
|
||||
final String targetPlatforms = androidBuildInfo
|
||||
.targetArchs
|
||||
.map(getPlatformNameForAndroidArch).join(',');
|
||||
command.add('-Ptarget-platform=$targetPlatforms');
|
||||
}
|
||||
if (target != null) {
|
||||
command.add('-Ptarget=$target');
|
||||
@ -322,12 +329,6 @@ Future<void> buildGradleApp({
|
||||
if (androidBuildInfo.shrink) {
|
||||
command.add('-Pshrink=true');
|
||||
}
|
||||
if (androidBuildInfo.targetArchs.isNotEmpty) {
|
||||
final String targetPlatforms = androidBuildInfo
|
||||
.targetArchs
|
||||
.map(getPlatformNameForAndroidArch).join(',');
|
||||
command.add('-Ptarget-platform=$targetPlatforms');
|
||||
}
|
||||
if (shouldBuildPluginAsAar) {
|
||||
// Pass a system flag instead of a project flag, so this flag can be
|
||||
// read from include_flutter.groovy.
|
||||
@ -537,11 +538,6 @@ Future<void> buildGradleAar({
|
||||
command.add('-Ptarget=$target');
|
||||
}
|
||||
|
||||
if (androidBuildInfo.targetArchs.isNotEmpty) {
|
||||
final String targetPlatforms = androidBuildInfo.targetArchs
|
||||
.map(getPlatformNameForAndroidArch).join(',');
|
||||
command.add('-Ptarget-platform=$targetPlatforms');
|
||||
}
|
||||
if (globals.artifacts is LocalEngineArtifacts) {
|
||||
final LocalEngineArtifacts localEngineArtifacts = globals.artifacts as LocalEngineArtifacts;
|
||||
final Directory localEngineRepo = _getLocalEngineRepo(
|
||||
@ -571,6 +567,12 @@ Future<void> buildGradleAar({
|
||||
'in ${outputDirectory.path}'
|
||||
);
|
||||
}
|
||||
command.add('-Ptarget-platform=${_getTargetPlatformByLocalEnginePath(
|
||||
localEngineArtifacts.engineOutPath)}');
|
||||
} else if (androidBuildInfo.targetArchs.isNotEmpty) {
|
||||
final String targetPlatforms = androidBuildInfo.targetArchs
|
||||
.map(getPlatformNameForAndroidArch).join(',');
|
||||
command.add('-Ptarget-platform=$targetPlatforms');
|
||||
}
|
||||
|
||||
command.add(aarTask);
|
||||
@ -928,7 +930,7 @@ Directory _getLocalEngineRepo({
|
||||
assert(engineOutPath != null);
|
||||
assert(androidBuildInfo != null);
|
||||
|
||||
final String abi = getEnumName(androidBuildInfo.targetArchs.first);
|
||||
final String abi = _getAbiByLocalEnginePath(engineOutPath);
|
||||
final Directory localEngineRepo = globals.fs.systemTempDirectory
|
||||
.createTempSync('flutter_tool_local_engine_repo.');
|
||||
|
||||
@ -979,3 +981,27 @@ Directory _getLocalEngineRepo({
|
||||
}
|
||||
return localEngineRepo;
|
||||
}
|
||||
|
||||
String _getAbiByLocalEnginePath(String engineOutPath) {
|
||||
String result = 'armeabi_v7a';
|
||||
if (engineOutPath.contains('x86')) {
|
||||
result = 'x86';
|
||||
} else if (engineOutPath.contains('x64')) {
|
||||
result = 'x86_64';
|
||||
} else if (engineOutPath.contains('arm64')) {
|
||||
result = 'arm64_v8a';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
String _getTargetPlatformByLocalEnginePath(String engineOutPath) {
|
||||
String result = 'android-arm';
|
||||
if (engineOutPath.contains('x86')) {
|
||||
result = 'android-x86';
|
||||
} else if (engineOutPath.contains('x64')) {
|
||||
result = 'android-x64';
|
||||
} else if (engineOutPath.contains('arm64')) {
|
||||
result = 'android-arm64';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1662,7 +1662,7 @@ plugin1=${plugin1.path}
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext('build apk uses selected local engine', () async {
|
||||
testUsingContext('build apk uses selected local engine,the engine abi is arm', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: TargetPlatform.android_arm, mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_arm'));
|
||||
@ -1754,7 +1754,286 @@ plugin1=${plugin1.path}
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext('build aar uses selected local engine', () async {
|
||||
testUsingContext(
|
||||
'build apk uses selected local engine,the engine abi is arm64', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: anyNamed('platform'), mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_arm64'));
|
||||
|
||||
fileSystem.file('out/android_arm64/flutter_embedding_release.pom')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project>
|
||||
<version>1.0.0-73fd6b049a80bcea2db1f26c7cee434907cd188b</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
''');
|
||||
fileSystem.file('out/android_arm64/arm64_v8a_release.pom').createSync(recursive: true);
|
||||
fileSystem.file('out/android_arm64/arm64_v8a_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_arm64/flutter_embedding_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_arm64/flutter_embedding_release.pom').createSync(recursive: true);
|
||||
|
||||
fileSystem.file('android/gradlew').createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('android')
|
||||
.childFile('gradle.properties')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.file('android/build.gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('android')
|
||||
.childDirectory('app')
|
||||
.childFile('build.gradle')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('apply from: irrelevant/flutter.gradle');
|
||||
|
||||
// Let any process start. Assert after.
|
||||
when(mockProcessManager.run(
|
||||
any,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
|
||||
|
||||
when(mockProcessManager.start(any,
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
environment: anyNamed('environment')))
|
||||
.thenAnswer((_) {
|
||||
return Future<Process>.value(
|
||||
createMockProcess(
|
||||
exitCode: 1,
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
await expectLater(() async {
|
||||
await buildGradleApp(
|
||||
project: FlutterProject.current(),
|
||||
androidBuildInfo: const AndroidBuildInfo(
|
||||
BuildInfo(
|
||||
BuildMode.release,
|
||||
null,
|
||||
treeShakeIcons: false,
|
||||
),
|
||||
),
|
||||
target: 'lib/main.dart',
|
||||
isBuildingBundle: false,
|
||||
localGradleErrors: const <GradleHandledError>[],
|
||||
);
|
||||
}, throwsToolExit());
|
||||
|
||||
final List<String> actualGradlewCall = verify(
|
||||
mockProcessManager.start(
|
||||
captureAny,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory')
|
||||
),
|
||||
).captured.last as List<String>;
|
||||
|
||||
expect(actualGradlewCall, contains('/android/gradlew'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_arm64'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-repo=/.tmp_rand0/flutter_tool_local_engine_repo.rand0'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-build-mode=release'));
|
||||
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
AndroidStudio: () => mockAndroidStudio,
|
||||
Artifacts: () => mockArtifacts,
|
||||
Cache: () => cache,
|
||||
Platform: () => android,
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext(
|
||||
'build apk uses selected local engine,the engine abi is x86', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: anyNamed('platform'), mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_x86'));
|
||||
|
||||
fileSystem.file('out/android_x86/flutter_embedding_release.pom')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project>
|
||||
<version>1.0.0-73fd6b049a80bcea2db1f26c7cee434907cd188b</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
''');
|
||||
fileSystem.file('out/android_x86/x86_release.pom').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x86/x86_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x86/flutter_embedding_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x86/flutter_embedding_release.pom').createSync(recursive: true);
|
||||
|
||||
fileSystem.file('android/gradlew').createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('android')
|
||||
.childFile('gradle.properties')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.file('android/build.gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('android')
|
||||
.childDirectory('app')
|
||||
.childFile('build.gradle')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('apply from: irrelevant/flutter.gradle');
|
||||
|
||||
// Let any process start. Assert after.
|
||||
when(mockProcessManager.run(
|
||||
any,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
|
||||
|
||||
when(mockProcessManager.start(any,
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
environment: anyNamed('environment')))
|
||||
.thenAnswer((_) {
|
||||
return Future<Process>.value(
|
||||
createMockProcess(
|
||||
exitCode: 1,
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
await expectLater(() async {
|
||||
await buildGradleApp(
|
||||
project: FlutterProject.current(),
|
||||
androidBuildInfo: const AndroidBuildInfo(
|
||||
BuildInfo(
|
||||
BuildMode.release,
|
||||
null,
|
||||
treeShakeIcons: false,
|
||||
),
|
||||
),
|
||||
target: 'lib/main.dart',
|
||||
isBuildingBundle: false,
|
||||
localGradleErrors: const <GradleHandledError>[],
|
||||
);
|
||||
}, throwsToolExit());
|
||||
|
||||
final List<String> actualGradlewCall = verify(
|
||||
mockProcessManager.start(
|
||||
captureAny,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory')
|
||||
),
|
||||
).captured.last as List<String>;
|
||||
|
||||
expect(actualGradlewCall, contains('/android/gradlew'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_x86'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-repo=/.tmp_rand0/flutter_tool_local_engine_repo.rand0'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-build-mode=release'));
|
||||
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
AndroidStudio: () => mockAndroidStudio,
|
||||
Artifacts: () => mockArtifacts,
|
||||
Cache: () => cache,
|
||||
Platform: () => android,
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext(
|
||||
'build apk uses selected local engine,the engine abi is x64', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: anyNamed('platform'), mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_x64'));
|
||||
|
||||
fileSystem.file('out/android_x64/flutter_embedding_release.pom')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project>
|
||||
<version>1.0.0-73fd6b049a80bcea2db1f26c7cee434907cd188b</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
''');
|
||||
fileSystem.file('out/android_x64/x86_64_release.pom').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x64/x86_64_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x64/flutter_embedding_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x64/flutter_embedding_release.pom').createSync(recursive: true);
|
||||
|
||||
fileSystem.file('android/gradlew').createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('android')
|
||||
.childFile('gradle.properties')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.file('android/build.gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('android')
|
||||
.childDirectory('app')
|
||||
.childFile('build.gradle')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('apply from: irrelevant/flutter.gradle');
|
||||
|
||||
// Let any process start. Assert after.
|
||||
when(mockProcessManager.run(
|
||||
any,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
|
||||
|
||||
when(mockProcessManager.start(any,
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
environment: anyNamed('environment')))
|
||||
.thenAnswer((_) {
|
||||
return Future<Process>.value(
|
||||
createMockProcess(
|
||||
exitCode: 1,
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
await expectLater(() async {
|
||||
await buildGradleApp(
|
||||
project: FlutterProject.current(),
|
||||
androidBuildInfo: const AndroidBuildInfo(
|
||||
BuildInfo(
|
||||
BuildMode.release,
|
||||
null,
|
||||
treeShakeIcons: false,
|
||||
),
|
||||
),
|
||||
target: 'lib/main.dart',
|
||||
isBuildingBundle: false,
|
||||
localGradleErrors: const <GradleHandledError>[],
|
||||
);
|
||||
}, throwsToolExit());
|
||||
|
||||
final List<String> actualGradlewCall = verify(
|
||||
mockProcessManager.start(
|
||||
captureAny,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory')
|
||||
),
|
||||
).captured.last as List<String>;
|
||||
|
||||
expect(actualGradlewCall, contains('/android/gradlew'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_x64'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-repo=/.tmp_rand0/flutter_tool_local_engine_repo.rand0'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-build-mode=release'));
|
||||
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
AndroidStudio: () => mockAndroidStudio,
|
||||
Artifacts: () => mockArtifacts,
|
||||
Cache: () => cache,
|
||||
Platform: () => android,
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext('build aar uses selected local engine,the engine abi is arm', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: TargetPlatform.android_arm, mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_arm'));
|
||||
@ -1849,6 +2128,300 @@ plugin1=${plugin1.path}
|
||||
FileSystemUtils: () => fileSystemUtils,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext(
|
||||
'build aar uses selected local engine,the engine abi is arm64', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: anyNamed('platform'), mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_arm64'));
|
||||
|
||||
fileSystem.file('out/android_arm64/flutter_embedding_release.pom')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project>
|
||||
<version>1.0.0-73fd6b049a80bcea2db1f26c7cee434907cd188b</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
''');
|
||||
fileSystem.file('out/android_arm64/arm64_v8a_release.pom').createSync(recursive: true);
|
||||
fileSystem.file('out/android_arm64/arm64_v8a_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_arm64/flutter_embedding_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_arm64/flutter_embedding_release.pom').createSync(recursive: true);
|
||||
|
||||
final File manifestFile = fileSystem.file('pubspec.yaml');
|
||||
manifestFile.createSync(recursive: true);
|
||||
manifestFile.writeAsStringSync('''
|
||||
flutter:
|
||||
module:
|
||||
androidPackage: com.example.test
|
||||
'''
|
||||
);
|
||||
|
||||
fileSystem.directory('.android/gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('.android/gradle/wrapper')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.file('.android/gradlew').createSync(recursive: true);
|
||||
|
||||
fileSystem.file('.android/gradle.properties')
|
||||
.writeAsStringSync('irrelevant');
|
||||
|
||||
fileSystem.file('.android/build.gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
// Let any process start. Assert after.
|
||||
when(mockProcessManager.run(
|
||||
any,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
|
||||
|
||||
fileSystem.directory('build/outputs/repo').createSync(recursive: true);
|
||||
|
||||
when(fileSystemUtils.copyDirectorySync(any, any)).thenReturn(null);
|
||||
|
||||
await buildGradleAar(
|
||||
androidBuildInfo: const AndroidBuildInfo(
|
||||
BuildInfo(BuildMode.release, null, treeShakeIcons: false)),
|
||||
project: FlutterProject.current(),
|
||||
outputDirectory: fileSystem.directory('build/'),
|
||||
target: '',
|
||||
buildNumber: '2.0',
|
||||
);
|
||||
|
||||
final List<String> actualGradlewCall = verify(
|
||||
mockProcessManager.run(
|
||||
captureAny,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
),
|
||||
).captured.last as List<String>;
|
||||
|
||||
expect(actualGradlewCall, contains('/.android/gradlew'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_arm64'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-repo=/.tmp_rand0/flutter_tool_local_engine_repo.rand0'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-build-mode=release'));
|
||||
expect(actualGradlewCall, contains('-PbuildNumber=2.0'));
|
||||
|
||||
// Verify the local engine repo is copied into the generated Maven repo.
|
||||
final List<dynamic> copyDirectoryArguments = verify(
|
||||
fileSystemUtils.copyDirectorySync(captureAny, captureAny)
|
||||
).captured;
|
||||
|
||||
expect(copyDirectoryArguments.length, 2);
|
||||
expect((copyDirectoryArguments.first as Directory).path, '/.tmp_rand0/flutter_tool_local_engine_repo.rand0');
|
||||
expect((copyDirectoryArguments.last as Directory).path, 'build/outputs/repo');
|
||||
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
AndroidStudio: () => mockAndroidStudio,
|
||||
Artifacts: () => mockArtifacts,
|
||||
Cache: () => cache,
|
||||
Platform: () => android,
|
||||
FileSystem: () => fileSystem,
|
||||
FileSystemUtils: () => fileSystemUtils,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext(
|
||||
'build aar uses selected local engine,the engine abi is x86', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: anyNamed('platform'), mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_x86'));
|
||||
|
||||
fileSystem.file('out/android_x86/flutter_embedding_release.pom')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project>
|
||||
<version>1.0.0-73fd6b049a80bcea2db1f26c7cee434907cd188b</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
''');
|
||||
fileSystem.file('out/android_x86/x86_release.pom').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x86/x86_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x86/flutter_embedding_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x86/flutter_embedding_release.pom').createSync(recursive: true);
|
||||
|
||||
final File manifestFile = fileSystem.file('pubspec.yaml');
|
||||
manifestFile.createSync(recursive: true);
|
||||
manifestFile.writeAsStringSync('''
|
||||
flutter:
|
||||
module:
|
||||
androidPackage: com.example.test
|
||||
'''
|
||||
);
|
||||
|
||||
fileSystem.directory('.android/gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('.android/gradle/wrapper')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.file('.android/gradlew').createSync(recursive: true);
|
||||
|
||||
fileSystem.file('.android/gradle.properties')
|
||||
.writeAsStringSync('irrelevant');
|
||||
|
||||
fileSystem.file('.android/build.gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
// Let any process start. Assert after.
|
||||
when(mockProcessManager.run(
|
||||
any,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
|
||||
|
||||
fileSystem.directory('build/outputs/repo').createSync(recursive: true);
|
||||
|
||||
when(fileSystemUtils.copyDirectorySync(any, any)).thenReturn(null);
|
||||
|
||||
await buildGradleAar(
|
||||
androidBuildInfo: const AndroidBuildInfo(
|
||||
BuildInfo(BuildMode.release, null, treeShakeIcons: false)),
|
||||
project: FlutterProject.current(),
|
||||
outputDirectory: fileSystem.directory('build/'),
|
||||
target: '',
|
||||
buildNumber: '2.0',
|
||||
);
|
||||
|
||||
final List<String> actualGradlewCall = verify(
|
||||
mockProcessManager.run(
|
||||
captureAny,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
),
|
||||
).captured.last as List<String>;
|
||||
|
||||
expect(actualGradlewCall, contains('/.android/gradlew'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_x86'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-repo=/.tmp_rand0/flutter_tool_local_engine_repo.rand0'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-build-mode=release'));
|
||||
expect(actualGradlewCall, contains('-PbuildNumber=2.0'));
|
||||
|
||||
// Verify the local engine repo is copied into the generated Maven repo.
|
||||
final List<dynamic> copyDirectoryArguments = verify(
|
||||
fileSystemUtils.copyDirectorySync(captureAny, captureAny)
|
||||
).captured;
|
||||
|
||||
expect(copyDirectoryArguments.length, 2);
|
||||
expect((copyDirectoryArguments.first as Directory).path, '/.tmp_rand0/flutter_tool_local_engine_repo.rand0');
|
||||
expect((copyDirectoryArguments.last as Directory).path, 'build/outputs/repo');
|
||||
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
AndroidStudio: () => mockAndroidStudio,
|
||||
Artifacts: () => mockArtifacts,
|
||||
Cache: () => cache,
|
||||
Platform: () => android,
|
||||
FileSystem: () => fileSystem,
|
||||
FileSystemUtils: () => fileSystemUtils,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
|
||||
testUsingContext(
|
||||
'build aar uses selected local engine,the engine abi is x64', () async {
|
||||
when(mockArtifacts.getArtifactPath(Artifact.flutterFramework,
|
||||
platform: anyNamed('platform'), mode: anyNamed('mode'))).thenReturn('engine');
|
||||
when(mockArtifacts.engineOutPath).thenReturn(fileSystem.path.join('out', 'android_x64'));
|
||||
|
||||
fileSystem.file('out/android_x64/flutter_embedding_release.pom')
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync('''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project>
|
||||
<version>1.0.0-73fd6b049a80bcea2db1f26c7cee434907cd188b</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
''');
|
||||
fileSystem.file('out/android_x64/x86_64_release.pom').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x64/x86_64_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x64/flutter_embedding_release.jar').createSync(recursive: true);
|
||||
fileSystem.file('out/android_x64/flutter_embedding_release.pom').createSync(recursive: true);
|
||||
|
||||
final File manifestFile = fileSystem.file('pubspec.yaml');
|
||||
manifestFile.createSync(recursive: true);
|
||||
manifestFile.writeAsStringSync('''
|
||||
flutter:
|
||||
module:
|
||||
androidPackage: com.example.test
|
||||
'''
|
||||
);
|
||||
|
||||
fileSystem.directory('.android/gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.directory('.android/gradle/wrapper')
|
||||
.createSync(recursive: true);
|
||||
|
||||
fileSystem.file('.android/gradlew').createSync(recursive: true);
|
||||
|
||||
fileSystem.file('.android/gradle.properties')
|
||||
.writeAsStringSync('irrelevant');
|
||||
|
||||
fileSystem.file('.android/build.gradle')
|
||||
.createSync(recursive: true);
|
||||
|
||||
// Let any process start. Assert after.
|
||||
when(mockProcessManager.run(
|
||||
any,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
|
||||
|
||||
fileSystem.directory('build/outputs/repo').createSync(recursive: true);
|
||||
|
||||
when(fileSystemUtils.copyDirectorySync(any, any)).thenReturn(null);
|
||||
|
||||
await buildGradleAar(
|
||||
androidBuildInfo: const AndroidBuildInfo(
|
||||
BuildInfo(BuildMode.release, null, treeShakeIcons: false)),
|
||||
project: FlutterProject.current(),
|
||||
outputDirectory: fileSystem.directory('build/'),
|
||||
target: '',
|
||||
buildNumber: '2.0',
|
||||
);
|
||||
|
||||
final List<String> actualGradlewCall = verify(
|
||||
mockProcessManager.run(
|
||||
captureAny,
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
),
|
||||
).captured.last as List<String>;
|
||||
|
||||
expect(actualGradlewCall, contains('/.android/gradlew'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-out=out/android_x64'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-repo=/.tmp_rand0/flutter_tool_local_engine_repo.rand0'));
|
||||
expect(actualGradlewCall, contains('-Plocal-engine-build-mode=release'));
|
||||
expect(actualGradlewCall, contains('-PbuildNumber=2.0'));
|
||||
|
||||
// Verify the local engine repo is copied into the generated Maven repo.
|
||||
final List<dynamic> copyDirectoryArguments = verify(
|
||||
fileSystemUtils.copyDirectorySync(captureAny, captureAny)
|
||||
).captured;
|
||||
|
||||
expect(copyDirectoryArguments.length, 2);
|
||||
expect((copyDirectoryArguments.first as Directory).path, '/.tmp_rand0/flutter_tool_local_engine_repo.rand0');
|
||||
expect((copyDirectoryArguments.last as Directory).path, 'build/outputs/repo');
|
||||
|
||||
}, overrides: <Type, Generator>{
|
||||
AndroidSdk: () => mockAndroidSdk,
|
||||
AndroidStudio: () => mockAndroidStudio,
|
||||
Artifacts: () => mockArtifacts,
|
||||
Cache: () => cache,
|
||||
Platform: () => android,
|
||||
FileSystem: () => fileSystem,
|
||||
FileSystemUtils: () => fileSystemUtils,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
});
|
||||
});
|
||||
|
||||
group('printHowToConsumeAar', () {
|
||||
|
||||
@ -214,10 +214,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=true',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -242,10 +242,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=true',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Psplit-debug-info=${tempDir.path}',
|
||||
'assembleRelease',
|
||||
],
|
||||
@ -274,9 +274,9 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -297,10 +297,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=true',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -352,10 +352,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=true',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -403,10 +403,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=true',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
|
||||
@ -200,10 +200,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=false',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'bundleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -233,9 +233,9 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=false',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'bundleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -256,10 +256,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=false',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'bundleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -311,10 +311,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=false',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
@ -362,10 +362,10 @@ void main() {
|
||||
<String>[
|
||||
gradlew,
|
||||
'-q',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'-Ptarget=${globals.fs.path.join(tempDir.path, 'flutter_project', 'lib', 'main.dart')}',
|
||||
'-Ptrack-widget-creation=false',
|
||||
'-Pshrink=true',
|
||||
'-Ptarget-platform=android-arm,android-arm64,android-x64',
|
||||
'assembleRelease',
|
||||
],
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user