diff --git a/dev/devicelab/bin/tasks/module_test_ios.dart b/dev/devicelab/bin/tasks/module_test_ios.dart index 8cd8b88f36..b13ddef44c 100644 --- a/dev/devicelab/bin/tasks/module_test_ios.dart +++ b/dev/devicelab/bin/tasks/module_test_ios.dart @@ -191,6 +191,16 @@ Future main() async { // Android-only, no embedded framework. checkDirectoryNotExists(path.join(ephemeralIOSHostApp.path, 'Frameworks', 'android_alarm_manager.framework')); + section('Clean and pub get module'); + + await inDirectory(projectDir, () async { + await flutter('clean'); + }); + + await inDirectory(projectDir, () async { + await flutter('pub', options: ['get']); + }); + section('Add to existing iOS Objective-C app'); final Directory objectiveCHostApp = Directory(path.join(tempDir.path, 'hello_host_app')); @@ -241,6 +251,23 @@ Future main() async { return TaskResult.failure('Failed to build existing Objective-C app .app'); } + checkFileExists(path.join( + objectiveCBuildDirectory.path, + 'Host.app', + 'Frameworks', + 'Flutter.framework', + 'Flutter', + )); + + checkFileExists(path.join( + objectiveCBuildDirectory.path, + 'Host.app', + 'Frameworks', + 'App.framework', + 'flutter_assets', + 'isolate_snapshot_data', + )); + final String objectiveCAnalyticsOutput = objectiveCAnalyticsOutputFile.readAsStringSync(); if (!objectiveCAnalyticsOutput.contains('cd24: ios') || !objectiveCAnalyticsOutput.contains('cd25: true') diff --git a/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl index 4d7715a23a..892a281988 100644 --- a/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl +++ b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl @@ -96,7 +96,8 @@ end # Optional, defaults to two levels up from the directory of this script. # MyApp/my_flutter/.ios/Flutter/../.. def install_flutter_application_pod(flutter_application_path) - app_framework_dir = File.expand_path('App.framework', File.join('..', __FILE__)) + current_directory_pathname = Pathname.new File.expand_path('..', __FILE__) + app_framework_dir = File.expand_path('App.framework', current_directory_pathname.to_path) app_framework_dylib = File.join(app_framework_dir, 'App') if !File.exist?(app_framework_dylib) # Fake an App.framework to have something to link against if the xcode backend script has not run yet. @@ -108,7 +109,7 @@ def install_flutter_application_pod(flutter_application_path) # Keep pod and script phase paths relative so they can be checked into source control. # Process will be run from project directory. - current_directory_pathname = Pathname.new File.expand_path('..', __FILE__) + # defined_in_file is set by CocoaPods and is a Pathname to the Podfile. project_directory_pathname = defined_in_file.dirname relative = current_directory_pathname.relative_path_from project_directory_pathname