mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Use the maven-publish plugin to publish AAR files. (#101891)
This commit is contained in:
parent
a9914e78d2
commit
606e91ad63
88
.ci.yaml
88
.ci.yaml
@ -19,7 +19,7 @@ platform_properties:
|
||||
{"name":"android_sdk","path":"android"},
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"openjdk","path":"java"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"}
|
||||
]
|
||||
dependencies: >-
|
||||
@ -37,7 +37,7 @@ platform_properties:
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"}
|
||||
]
|
||||
dependencies: >-
|
||||
@ -57,7 +57,7 @@ platform_properties:
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"}
|
||||
]
|
||||
dependencies: >-
|
||||
@ -76,7 +76,7 @@ platform_properties:
|
||||
{"name":"android_sdk","path":"android"},
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"osx_sdk_13a233","path":"osx_sdk"},
|
||||
{"name":"pub_cache","path":".pub-cache"},
|
||||
{"name":"xcode_binary","path":"xcode_binary"}
|
||||
@ -96,7 +96,7 @@ platform_properties:
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"}
|
||||
]
|
||||
dependencies: >-
|
||||
@ -116,7 +116,7 @@ platform_properties:
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"},
|
||||
{"name":"xcode_binary","path":"xcode_binary"},
|
||||
{"name":"osx_sdk_13a233","path":"osx_sdk"}
|
||||
@ -139,7 +139,7 @@ platform_properties:
|
||||
{"name":"android_sdk","path":"android"},
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"},
|
||||
{"name":"vsbuild","path":"vsbuild"}
|
||||
]
|
||||
@ -158,7 +158,7 @@ platform_properties:
|
||||
{"name":"chrome_and_driver_96","path":"chrome"},
|
||||
{"name":"flutter_sdk","path":"flutter sdk"},
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name":"openjdk","path":"java11"},
|
||||
{"name":"openjdk_11","path":"java"},
|
||||
{"name":"pub_cache","path":".pub-cache"}
|
||||
]
|
||||
dependencies: >-
|
||||
@ -190,13 +190,13 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
{"dependency": "android_sdk", "version": "version:31v8"},
|
||||
{"dependency": "chrome_and_driver", "version": "version:96.2"},
|
||||
{"dependency": "open_jdk"}
|
||||
{"dependency": "open_jdk", "version": "11"}
|
||||
]
|
||||
tags: >
|
||||
["devicelab","hostonly"]
|
||||
@ -462,7 +462,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -485,8 +485,8 @@ targets:
|
||||
properties:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "gradle", "path": "gradle"},
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -510,7 +510,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -534,7 +534,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -558,7 +558,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -582,7 +582,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -630,7 +630,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle", "path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -655,7 +655,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -680,7 +680,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle", "path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -1551,7 +1551,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1569,7 +1569,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1587,7 +1587,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1605,7 +1605,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1623,7 +1623,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1641,7 +1641,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1659,7 +1659,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -1677,7 +1677,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -2276,7 +2276,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -2436,12 +2436,12 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle", "path":"gradle"},
|
||||
{"name": "openjdk", "path": "java"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
{"dependency": "android_sdk", "version": "version:31v8"},
|
||||
{"dependency": "open_jdk"}
|
||||
{"dependency": "open_jdk", "version": "11"}
|
||||
]
|
||||
tags: >
|
||||
["devicelab","hostonly"]
|
||||
@ -2725,7 +2725,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -2772,7 +2772,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -2796,7 +2796,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -2822,7 +2822,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle", "path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -3258,7 +3258,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -3276,7 +3276,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -3294,7 +3294,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
@ -3711,13 +3711,13 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
{"dependency": "android_sdk", "version": "version:31v8"},
|
||||
{"dependency": "chrome_and_driver", "version": "version:96.2"},
|
||||
{"dependency": "open_jdk"}
|
||||
{"dependency": "open_jdk", "version": "11"}
|
||||
]
|
||||
tags: >
|
||||
["devicelab","hostonly"]
|
||||
@ -3952,7 +3952,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
tags: >
|
||||
["devicelab","hostonly"]
|
||||
@ -3995,7 +3995,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle", "path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -4020,7 +4020,7 @@ targets:
|
||||
caches: >-
|
||||
[
|
||||
{"name":"gradle","path":"gradle"},
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
dependencies: >-
|
||||
[
|
||||
@ -4323,7 +4323,7 @@ targets:
|
||||
]
|
||||
caches: >-
|
||||
[
|
||||
{"name": "openjdk", "path": "java11"}
|
||||
{"name": "openjdk_11", "path": "java"}
|
||||
]
|
||||
scheduler: luci
|
||||
|
||||
|
1
AUTHORS
1
AUTHORS
@ -93,3 +93,4 @@ Alberto Miola <betoman96@gmail.com>
|
||||
Twin Sun, LLC <google-contrib@twinsunsolutions.com>
|
||||
Taskulu LDA <contributions@taskulu.com>
|
||||
Jonathan Joelson <jon@joelson.co>
|
||||
Elsabe Ros <hello@elsabe.dev>
|
||||
|
@ -51,7 +51,8 @@ Future<void> main() async {
|
||||
});
|
||||
});
|
||||
|
||||
bool foundAarProjectName = false;
|
||||
bool foundProjectNameInOldAar = false;
|
||||
bool foundProjectNameInNewAar = false;
|
||||
await runModuleProjectTest((FlutterModuleProject flutterProject) async {
|
||||
section('AAR content with --obfuscate');
|
||||
|
||||
@ -67,21 +68,23 @@ Future<void> main() async {
|
||||
]);
|
||||
});
|
||||
|
||||
final String outputAarDirectory = path.join(
|
||||
section('Check old _release AAR files');
|
||||
|
||||
final String oldReleaseAar = path.join(
|
||||
flutterProject.rootPath,
|
||||
'build/host/outputs/repo/com/example/${flutterProject.name}/flutter_release/1.0/flutter_release-1.0.aar',
|
||||
);
|
||||
final Iterable<String> aarFiles = await getFilesInAar(outputAarDirectory);
|
||||
final Iterable<String> filesInOldAar = await getFilesInAar(oldReleaseAar);
|
||||
|
||||
checkCollectionContains<String>(<String>[
|
||||
...flutterAssets,
|
||||
'jni/armeabi-v7a/libapp.so',
|
||||
], aarFiles);
|
||||
], filesInOldAar);
|
||||
|
||||
// Verify that an identifier from the Dart project code is not present
|
||||
// in the compiled binary.
|
||||
await inDirectory(flutterProject.rootPath, () async {
|
||||
await exec('unzip', <String>[outputAarDirectory]);
|
||||
await exec('unzip', <String>['-o', oldReleaseAar]);
|
||||
checkFileExists(path.join(flutterProject.rootPath, 'jni/armeabi-v7a/libapp.so'));
|
||||
final String response = await eval(
|
||||
'grep',
|
||||
@ -89,16 +92,46 @@ Future<void> main() async {
|
||||
canFail: true,
|
||||
);
|
||||
if (response.trim().contains('matches')) {
|
||||
foundAarProjectName = true;
|
||||
foundProjectNameInOldAar = true;
|
||||
}
|
||||
});
|
||||
|
||||
section('Check new -release AAR files');
|
||||
|
||||
final String newReleaseAar = path.join(
|
||||
flutterProject.rootPath,
|
||||
'build/host/outputs/repo/com/example/${flutterProject.name}/flutter/1.0/flutter-1.0-release.aar',
|
||||
);
|
||||
final Iterable<String> filesInNewAar = await getFilesInAar(newReleaseAar);
|
||||
|
||||
checkCollectionContains<String>(<String>[
|
||||
...flutterAssets,
|
||||
'jni/armeabi-v7a/libapp.so',
|
||||
], filesInNewAar);
|
||||
|
||||
await inDirectory(flutterProject.rootPath, () async {
|
||||
await exec('unzip', <String>['-o', newReleaseAar]);
|
||||
checkFileExists(path.join(flutterProject.rootPath, 'jni/armeabi-v7a/libapp.so'));
|
||||
final String response = await eval(
|
||||
'grep',
|
||||
<String>[flutterProject.name, 'jni/armeabi-v7a/libapp.so'],
|
||||
canFail: true,
|
||||
);
|
||||
if (response.trim().contains('matches')) {
|
||||
foundProjectNameInNewAar = true;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
if (foundApkProjectName) {
|
||||
return TaskResult.failure('Found project name in obfuscated APK dart library');
|
||||
}
|
||||
if (foundAarProjectName) {
|
||||
return TaskResult.failure('Found project name in obfuscated AAR dart library');
|
||||
if (foundProjectNameInOldAar) {
|
||||
return TaskResult.failure('Found project name in obfuscated AAR _release dart library');
|
||||
}
|
||||
if (foundProjectNameInNewAar) {
|
||||
return TaskResult.failure('Found project name in obfuscated AAR -release dart library');
|
||||
}
|
||||
|
||||
return TaskResult.success(null);
|
||||
|
@ -98,7 +98,7 @@ Future<void> main() async {
|
||||
'repo',
|
||||
);
|
||||
|
||||
section('Check release Maven artifacts');
|
||||
section('Check release Maven artifacts (old format)');
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
@ -111,7 +111,7 @@ Future<void> main() async {
|
||||
'flutter_release-1.0.aar',
|
||||
));
|
||||
|
||||
final String releasePom = path.join(
|
||||
final String releasePomOld = path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
@ -122,7 +122,7 @@ Future<void> main() async {
|
||||
'flutter_release-1.0.pom',
|
||||
);
|
||||
|
||||
checkFileExists(releasePom);
|
||||
checkFileExists(releasePomOld);
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
@ -146,6 +146,54 @@ Future<void> main() async {
|
||||
'plugin_with_android_release-1.0.pom',
|
||||
));
|
||||
|
||||
section('Check release Maven artifacts (new format)');
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'hello',
|
||||
'flutter',
|
||||
'1.0',
|
||||
'flutter-1.0-release.aar',
|
||||
));
|
||||
|
||||
final String releasePomNew = path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'hello',
|
||||
'flutter',
|
||||
'1.0',
|
||||
'flutter-1.0.pom',
|
||||
);
|
||||
|
||||
checkFileExists(releasePomNew);
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'plugin_with_android',
|
||||
'plugin_with_android',
|
||||
'1.0',
|
||||
'plugin_with_android-1.0-release.aar',
|
||||
));
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'plugin_with_android',
|
||||
'plugin_with_android',
|
||||
'1.0',
|
||||
'plugin_with_android-1.0.pom',
|
||||
));
|
||||
|
||||
section('Check AOT blobs in release POM');
|
||||
|
||||
checkFileContains(<String>[
|
||||
@ -153,8 +201,17 @@ Future<void> main() async {
|
||||
'armeabi_v7a_release',
|
||||
'arm64_v8a_release',
|
||||
'x86_64_release',
|
||||
'plugin_with_android_release',
|
||||
], releasePom);
|
||||
'plugin_with_android',
|
||||
'<relocation>', //make sure the old pom contains the <relocation> tag
|
||||
], releasePomOld);
|
||||
|
||||
checkFileContains(<String>[
|
||||
'flutter_embedding_release',
|
||||
'armeabi_v7a_release',
|
||||
'arm64_v8a_release',
|
||||
'x86_64_release',
|
||||
'plugin_with_android',
|
||||
], releasePomNew);
|
||||
|
||||
section('Check assets in release AAR');
|
||||
|
||||
@ -180,7 +237,29 @@ Future<void> main() async {
|
||||
)
|
||||
);
|
||||
|
||||
section('Check debug Maven artifacts');
|
||||
checkCollectionContains<String>(
|
||||
<String>[
|
||||
...flutterAssets,
|
||||
// AOT snapshots
|
||||
'jni/arm64-v8a/libapp.so',
|
||||
'jni/armeabi-v7a/libapp.so',
|
||||
'jni/x86_64/libapp.so',
|
||||
],
|
||||
await getFilesInAar(
|
||||
path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'hello',
|
||||
'flutter',
|
||||
'1.0',
|
||||
'flutter-1.0-release.aar',
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
section('Check debug Maven artifacts (old format)');
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
@ -193,7 +272,7 @@ Future<void> main() async {
|
||||
'flutter_debug-1.0.aar',
|
||||
));
|
||||
|
||||
final String debugPom = path.join(
|
||||
final String debugPomOld = path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
@ -204,7 +283,7 @@ Future<void> main() async {
|
||||
'flutter_debug-1.0.pom',
|
||||
);
|
||||
|
||||
checkFileExists(debugPom);
|
||||
checkFileExists(debugPomOld);
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
@ -228,6 +307,54 @@ Future<void> main() async {
|
||||
'plugin_with_android_debug-1.0.pom',
|
||||
));
|
||||
|
||||
section('Check debug Maven artifacts (new format)');
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'hello',
|
||||
'flutter',
|
||||
'1.0',
|
||||
'flutter-1.0-debug.aar',
|
||||
));
|
||||
|
||||
final String debugPomNew = path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'hello',
|
||||
'flutter',
|
||||
'1.0',
|
||||
'flutter-1.0.pom',
|
||||
);
|
||||
|
||||
checkFileExists(debugPomNew);
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'plugin_with_android',
|
||||
'plugin_with_android',
|
||||
'1.0',
|
||||
'plugin_with_android-1.0-debug.aar',
|
||||
));
|
||||
|
||||
checkFileExists(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'plugin_with_android',
|
||||
'plugin_with_android',
|
||||
'1.0',
|
||||
'plugin_with_android-1.0.pom',
|
||||
));
|
||||
|
||||
section('Check AOT blobs in debug POM');
|
||||
|
||||
checkFileContains(<String>[
|
||||
@ -236,8 +363,18 @@ Future<void> main() async {
|
||||
'x86_64_debug',
|
||||
'armeabi_v7a_debug',
|
||||
'arm64_v8a_debug',
|
||||
'plugin_with_android_debug',
|
||||
], debugPom);
|
||||
'plugin_with_android',
|
||||
'<relocation>', //make sure the old pom contains the <relocation> tag
|
||||
], debugPomOld);
|
||||
|
||||
checkFileContains(<String>[
|
||||
'flutter_embedding_debug',
|
||||
'x86_debug',
|
||||
'x86_64_debug',
|
||||
'armeabi_v7a_debug',
|
||||
'arm64_v8a_debug',
|
||||
'plugin_with_android',
|
||||
], debugPomNew);
|
||||
|
||||
section('Check assets in debug AAR');
|
||||
|
||||
@ -252,11 +389,27 @@ Future<void> main() async {
|
||||
'flutter_debug-1.0.aar',
|
||||
));
|
||||
|
||||
final Iterable<String> debugAarNew = await getFilesInAar(path.join(
|
||||
repoPath,
|
||||
'io',
|
||||
'flutter',
|
||||
'devicelab',
|
||||
'hello',
|
||||
'flutter',
|
||||
'1.0',
|
||||
'flutter-1.0-debug.aar',
|
||||
));
|
||||
|
||||
checkCollectionContains<String>(<String>[
|
||||
...flutterAssets,
|
||||
...debugAssets,
|
||||
], debugAar);
|
||||
|
||||
checkCollectionContains<String>(<String>[
|
||||
...flutterAssets,
|
||||
...debugAssets,
|
||||
], debugAarNew);
|
||||
|
||||
return TaskResult.success(null);
|
||||
} on TaskResult catch (taskResult) {
|
||||
return taskResult;
|
||||
|
@ -6,9 +6,7 @@
|
||||
import java.nio.file.Paths
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.maven.MavenDeployer
|
||||
import org.gradle.api.plugins.MavenPlugin
|
||||
import org.gradle.api.tasks.Upload
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
|
||||
void configureProject(Project project, String outputDir) {
|
||||
if (!project.hasProperty("android")) {
|
||||
@ -18,8 +16,6 @@ void configureProject(Project project, String outputDir) {
|
||||
throw new GradleException("Can't generate AAR on a non Android library project.");
|
||||
}
|
||||
|
||||
project.apply plugin: "maven"
|
||||
|
||||
// Snapshot versions include the timestamp in the artifact name.
|
||||
// Therefore, remove the snapshot part, so new runs of `flutter build aar` overrides existing artifacts.
|
||||
// This version isn't relevant in Flutter since the pub version is used
|
||||
@ -34,13 +30,51 @@ void configureProject(Project project, String outputDir) {
|
||||
addAarTask(project, variant)
|
||||
}
|
||||
|
||||
project.uploadArchives {
|
||||
project.publishing {
|
||||
repositories {
|
||||
mavenDeployer {
|
||||
repository(url: "file://${outputDir}/outputs/repo")
|
||||
maven {
|
||||
url = uri("file://${outputDir}/outputs/repo")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Some extra work to have alternative publications with the same format as the old maven plugin.
|
||||
// Instead of using classifiers for the variants, the old maven plugin appended `_{variant}` to the artifactId
|
||||
|
||||
// First, create a default MavenPublication for each variant (except "all" since that is used to publish artifacts in the new way)
|
||||
project.components.forEach { component ->
|
||||
if (component.name != "all") {
|
||||
project.publishing.publications.create(component.name, MavenPublication) {
|
||||
from component
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// then, rename the artifactId to include the variant and make sure to remove any classifier
|
||||
// data tha gradle has set, as well as adding a <relocation> tag pointing to the new coordinates
|
||||
project.publishing.publications.forEach { pub ->
|
||||
def relocationArtifactId = pub.artifactId
|
||||
pub.artifactId = "${relocationArtifactId}_${pub.name}"
|
||||
pub.alias = true
|
||||
|
||||
pub.pom.distributionManagement {
|
||||
relocation {
|
||||
// New artifact coordinates
|
||||
groupId = "${pub.groupId}"
|
||||
artifactId = "${relocationArtifactId}"
|
||||
version = "${pub.version}"
|
||||
message = "Use classifiers rather than _variant for new publish plugin"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// also publish the artifacts in the new way, using one set of coordinates with classifiers
|
||||
project.publishing.publications.create("all", MavenPublication) {
|
||||
from project.components.all
|
||||
alias false
|
||||
}
|
||||
|
||||
if (!project.property("is-plugin").toBoolean()) {
|
||||
return
|
||||
}
|
||||
@ -84,55 +118,21 @@ void addAarTask(Project project, variant) {
|
||||
String variantName = variant.name.capitalize()
|
||||
String taskName = "assembleAar$variantName"
|
||||
project.tasks.create(name: taskName) {
|
||||
// This check is required to be able to configure the archives before `uploadArchives` runs.
|
||||
// This check is required to be able to configure the archives before `publish` runs.
|
||||
if (!project.gradle.startParameter.taskNames.contains(taskName)) {
|
||||
return
|
||||
}
|
||||
project.uploadArchives.repositories.mavenDeployer {
|
||||
pom {
|
||||
artifactId = "${project.name}_${variant.name.toLowerCase()}"
|
||||
}
|
||||
}
|
||||
overrideDefaultPublishConfig(project, variant)
|
||||
// Generate the Maven artifacts.
|
||||
finalizedBy "uploadArchives"
|
||||
finalizedBy "publish"
|
||||
}
|
||||
}
|
||||
|
||||
// This method mimics the logic in AGP when `android.defaultPublishConfig` is set in `build.gradle`:
|
||||
// https://android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/variant/VariantHelper.java
|
||||
//
|
||||
// Unfortunately, `android.defaultPublishConfig` cannot be overridden at this point since
|
||||
// AGP already run this code.
|
||||
void overrideDefaultPublishConfig(Project project, variant) {
|
||||
String variantName = variant.name.capitalize()
|
||||
Task bundle = project.tasks.findByName("bundle${variantName}Aar") // gradle:3.2.0
|
||||
if (bundle == null) {
|
||||
bundle = project.tasks.findByName("bundle${variantName}") // gradle:3.1.0
|
||||
}
|
||||
if (bundle == null) {
|
||||
throw new GradleException("Can't generate AAR for variant ${variantName}.");
|
||||
}
|
||||
// Clear the current archive artifacts since the artifacts are based on `android.defaultPublishConfig`.
|
||||
project.configurations["archives"].artifacts.clear()
|
||||
// Add the artifact that will be published.
|
||||
project.artifacts.add("archives", bundle)
|
||||
// maven-publish has to be applied _before_ the project gets evaluated, but some of the code in
|
||||
// `configureProject` requires the project to be evaluated. Apply the maven plugin to all projects, but
|
||||
// only configure it if it matches the conditions in `projectsEvaluated`
|
||||
|
||||
def scopeMappings = project.uploadArchives.repositories.mavenDeployer.pom.scopeMappings
|
||||
// Clear the scope mappings added by AGP since they are based on the current `android.defaultPublishConfig`.
|
||||
scopeMappings.mappings.clear()
|
||||
// Add the new mappings.
|
||||
for (Configuration configuration : flattenConfiguration(variant.runtimeConfiguration)) {
|
||||
scopeMappings.addMapping(/* priority = */ 300, configuration, "compile")
|
||||
}
|
||||
}
|
||||
|
||||
Set<Configuration> flattenConfiguration(Configuration configuration) {
|
||||
Set<Configuration> configs = [configuration]
|
||||
for (Configuration extend : configuration.extendsFrom) {
|
||||
configs.addAll(flattenConfiguration(extend))
|
||||
}
|
||||
return configs
|
||||
allprojects {
|
||||
apply plugin: "maven-publish"
|
||||
}
|
||||
|
||||
projectsEvaluated {
|
||||
|
@ -726,7 +726,7 @@ void printHowToConsumeAar({
|
||||
|
||||
for (final String buildMode in buildModes) {
|
||||
logger.printStatus("""
|
||||
${buildMode}Implementation '$androidPackage:flutter_$buildMode:$buildNumber'""");
|
||||
${buildMode}Implementation '$androidPackage:flutter:$buildNumber:$buildMode'""");
|
||||
}
|
||||
|
||||
logger.printStatus('''
|
||||
|
@ -29,8 +29,7 @@ import 'android_sdk.dart';
|
||||
// https://kotlinlang.org/docs/gradle.html#plugin-and-versions
|
||||
const String templateDefaultGradleVersion = '7.4';
|
||||
const String templateAndroidGradlePluginVersion = '7.1.2';
|
||||
// TODO(egarciad): Gradle 7 breaks AARs builds: https://github.com/flutter/flutter/issues/101083
|
||||
const String templateDefaultGradleVersionForModule = '4.1.0';
|
||||
const String templateDefaultGradleVersionForModule = '7.1.2';
|
||||
const String templateKotlinGradlePluginVersion = '1.6.10';
|
||||
|
||||
// These versions should match the values in flutter.gradle (FlutterExtension).
|
||||
|
@ -543,9 +543,9 @@ flutter:
|
||||
' 3. Make the host app depend on the Flutter module:\n'
|
||||
'\n'
|
||||
' dependencies {\n'
|
||||
" releaseImplementation 'com.mycompany:flutter_release:2.2'\n"
|
||||
" debugImplementation 'com.mycompany:flutter_debug:2.2'\n"
|
||||
" profileImplementation 'com.mycompany:flutter_profile:2.2'\n"
|
||||
" releaseImplementation 'com.mycompany:flutter:2.2:release'\n"
|
||||
" debugImplementation 'com.mycompany:flutter:2.2:debug'\n"
|
||||
" profileImplementation 'com.mycompany:flutter:2.2:profile'\n"
|
||||
' }\n'
|
||||
'\n'
|
||||
'\n'
|
||||
@ -594,7 +594,7 @@ flutter:
|
||||
' 3. Make the host app depend on the Flutter module:\n'
|
||||
'\n'
|
||||
' dependencies {\n'
|
||||
" releaseImplementation 'com.mycompany:flutter_release:1.0'\n"
|
||||
" releaseImplementation 'com.mycompany:flutter:1.0:release'\n"
|
||||
' }\n'
|
||||
'\n'
|
||||
'To learn more, visit https://flutter.dev/go/build-aar\n'
|
||||
@ -632,7 +632,7 @@ flutter:
|
||||
' 3. Make the host app depend on the Flutter module:\n'
|
||||
'\n'
|
||||
' dependencies {\n'
|
||||
" debugImplementation 'com.mycompany:flutter_debug:1.0'\n"
|
||||
" debugImplementation 'com.mycompany:flutter:1.0:debug'\n"
|
||||
' }\n'
|
||||
'\n'
|
||||
'To learn more, visit https://flutter.dev/go/build-aar\n'
|
||||
@ -671,7 +671,7 @@ flutter:
|
||||
' 3. Make the host app depend on the Flutter module:\n'
|
||||
'\n'
|
||||
' dependencies {\n'
|
||||
" profileImplementation 'com.mycompany:flutter_profile:1.0'\n"
|
||||
" profileImplementation 'com.mycompany:flutter:1.0:profile'\n"
|
||||
' }\n'
|
||||
'\n'
|
||||
'\n'
|
||||
|
Loading…
Reference in New Issue
Block a user