From e69b4346028ad977ab3d8532692d6774c9f11f40 Mon Sep 17 00:00:00 2001 From: Mikkel Nygaard Ravn Date: Mon, 13 Aug 2018 10:35:59 +0200 Subject: [PATCH] Fix broken Flutter module with plugins (#20496) --- dev/devicelab/bin/tasks/module_test.dart | 11 +++++++++++ packages/flutter_tools/lib/src/ios/cocoapods.dart | 7 ++++--- .../src/main/java/io/flutter/facade/Flutter.java | 7 +++++-- packages/flutter_tools/test/ios/cocoapods_test.dart | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/dev/devicelab/bin/tasks/module_test.dart b/dev/devicelab/bin/tasks/module_test.dart index 696d7adddd0..6d31c95c023 100644 --- a/dev/devicelab/bin/tasks/module_test.dart +++ b/dev/devicelab/bin/tasks/module_test.dart @@ -31,6 +31,17 @@ Future main() async { ); }); + section('Add plugins'); + + final File pubspec = new File(path.join(directory.path, 'hello', 'pubspec.yaml')); + String content = await pubspec.readAsString(); + content = content.replaceFirst( + '\ndependencies:\n', + '\ndependencies:\n battery:\n package_info:\n', + ); + await pubspec.writeAsString(content, flush: true); + + section('Build Flutter module library archive'); await inDirectory(new Directory(path.join(directory.path, 'hello', '.android')), () async { diff --git a/packages/flutter_tools/lib/src/ios/cocoapods.dart b/packages/flutter_tools/lib/src/ios/cocoapods.dart index d6dc48c63f3..1b98d2bd741 100644 --- a/packages/flutter_tools/lib/src/ios/cocoapods.dart +++ b/packages/flutter_tools/lib/src/ios/cocoapods.dart @@ -148,7 +148,7 @@ class CocoaPods { return true; } - /// Ensures the `ios` sub-project of the Flutter project at [appDirectory] + /// Ensures the given iOS sub-project of a parent Flutter project /// contains a suitable `Podfile` and that its `Flutter/Xxx.xcconfig` files /// include pods configuration. void setupPodfile(IosProject iosProject) { @@ -156,13 +156,14 @@ class CocoaPods { // Don't do anything for iOS when host platform doesn't support it. return; } - if (!iosProject.directory.existsSync()) { + final Directory runnerProject = iosProject.directory.childDirectory('Runner.xcodeproj'); + if (!runnerProject.existsSync()) { return; } final File podfile = iosProject.podfile; if (!podfile.existsSync()) { final bool isSwift = xcodeProjectInterpreter.getBuildSettings( - iosProject.directory.childFile('Runner.xcodeproj').path, + runnerProject.path, 'Runner', ).containsKey('SWIFT_VERSION'); final File podfileTemplate = fs.file(fs.path.join( diff --git a/packages/flutter_tools/templates/module/android/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java b/packages/flutter_tools/templates/module/android/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java index 44f5aedce30..c9599c82a1e 100644 --- a/packages/flutter_tools/templates/module/android/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java +++ b/packages/flutter_tools/templates/module/android/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java @@ -12,6 +12,7 @@ import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.StringCodec; import io.flutter.view.FlutterMain; import io.flutter.view.FlutterNativeView; +import io.flutter.view.FlutterRunArguments; import io.flutter.view.FlutterView; import io.flutter.plugins.GeneratedPluginRegistrant; @@ -91,8 +92,10 @@ public final class Flutter { lifecycle.addObserver(new LifecycleObserver() { @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) public void onCreate() { - final String appBundlePath = FlutterMain.findAppBundlePath(activity.getApplicationContext()); - flutterView.runFromBundle(appBundlePath, null, "main", true); + final FlutterRunArguments arguments = new FlutterRunArguments(); + arguments.bundlePath = FlutterMain.findAppBundlePath(activity.getApplicationContext()); + arguments.entrypoint = "main"; + flutterView.runFromBundle(arguments); GeneratedPluginRegistrant.registerWith(flutterView.getPluginRegistry()); } diff --git a/packages/flutter_tools/test/ios/cocoapods_test.dart b/packages/flutter_tools/test/ios/cocoapods_test.dart index 3a0f8b533a2..7d6d2bac37c 100644 --- a/packages/flutter_tools/test/ios/cocoapods_test.dart +++ b/packages/flutter_tools/test/ios/cocoapods_test.dart @@ -46,7 +46,7 @@ void main() { mockProcessManager = new MockProcessManager(); mockXcodeProjectInterpreter = new MockXcodeProjectInterpreter(); projectUnderTest = await FlutterProject.fromDirectory(fs.directory('project')); - projectUnderTest.ios.directory.createSync(recursive: true); + projectUnderTest.ios.directory.childDirectory('Runner.xcodeproj').createSync(recursive: true); cocoaPodsUnderTest = new CocoaPods(); pretendPodVersionIs('1.5.0'); fs.file(fs.path.join(