Short circuit v1 deprecation warning on plugin projects (#94769)

This commit is contained in:
Gary Qian 2021-12-07 01:53:50 -08:00 committed by GitHub
parent 47a8f440c7
commit da4e997ed3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

View File

@ -417,6 +417,9 @@ class AndroidProject extends FlutterProjectPlatform {
/// True if the parent Flutter project is a module.
bool get isModule => parent.isModule;
/// True if the parent Flutter project is a plugin.
bool get isPlugin => parent.isPlugin;
/// True if the Flutter project is using the AndroidX support library.
bool get usesAndroidX => parent.usesAndroidX;
@ -595,6 +598,13 @@ The detected reason was:
// only supports the V2 embedding.
return AndroidEmbeddingVersionResult(AndroidEmbeddingVersion.v2, 'Is add-to-app module');
}
if (isPlugin) {
// Plugins do not use an appManifest, so we stop here.
//
// TODO(garyq): This method does not currently check for code references to
// the v1 embedding, we should check for this once removal is further along.
return AndroidEmbeddingVersionResult(AndroidEmbeddingVersion.v2, 'Is plugin');
}
if (appManifestFile == null || !appManifestFile.existsSync()) {
return AndroidEmbeddingVersionResult(AndroidEmbeddingVersion.v1, 'No `${appManifestFile.absolute.path}` file');
}

View File

@ -207,6 +207,13 @@ void main() {
project.checkForDeprecation(deprecationBehavior: DeprecationBehavior.ignore);
expect(testLogger.statusText, contains('https://flutter.dev/go/android-project-migration'));
});
_testInMemory('Android plugin project does not throw v1 embedding deprecation warning', () async {
final FlutterProject project = await aPluginProject();
project.checkForDeprecation(deprecationBehavior: DeprecationBehavior.exit);
expect(testLogger.statusText, isNot(contains('https://flutter.dev/go/android-project-migration')));
expect(testLogger.statusText, isNot(contains('No `<meta-data android:name="flutterEmbedding" android:value="2"/>` in ')));
});
_testInMemory('Android plugin without example app does not show a warning', () async {
final FlutterProject project = await aPluginProject();
project.example.directory.deleteSync();