From 4331c172d734ee0842f8193cdf71fff921642187 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Thu, 3 Oct 2019 18:35:20 -0700 Subject: [PATCH] Set DEFINES_MODULE=YES in plugin templates (#41828) --- dev/bots/test.dart | 1 + dev/devicelab/bin/tasks/plugin_lint_mac.dart | 69 +++++++++++++++++++ .../plugin/ios.tmpl/projectName.podspec.tmpl | 8 ++- .../macos.tmpl/projectName.podspec.tmpl | 8 +-- 4 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 dev/devicelab/bin/tasks/plugin_lint_mac.dart diff --git a/dev/bots/test.dart b/dev/bots/test.dart index 433068dd7c..bf66f78bcd 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart @@ -881,6 +881,7 @@ Future _runIntegrationTests() async { await _runDevicelabTest('flutter_create_offline_test_windows'); } else if (Platform.isMacOS) { await _runDevicelabTest('flutter_create_offline_test_mac'); + await _runDevicelabTest('plugin_lint_mac'); // TODO(jmagman): Re-enable once flakiness is resolved. // await _runDevicelabTest('module_test_ios'); } diff --git a/dev/devicelab/bin/tasks/plugin_lint_mac.dart b/dev/devicelab/bin/tasks/plugin_lint_mac.dart new file mode 100644 index 0000000000..ec49c82acb --- /dev/null +++ b/dev/devicelab/bin/tasks/plugin_lint_mac.dart @@ -0,0 +1,69 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter_devicelab/framework/framework.dart'; +import 'package:flutter_devicelab/framework/utils.dart'; +import 'package:path/path.dart' as path; + +/// Tests that the Flutter plugin template works. Use `pod lib lint` +/// to confirm the plugin module can be imported into an app. +Future main() async { + await task(() async { + section('Create Objective-C iOS plugin'); + + final Directory tempDir = Directory.systemTemp.createTempSync('flutter_plugin_test.'); + try { + const String objcPluginName = 'test_plugin_objc'; + await inDirectory(tempDir, () async { + await flutter( + 'create', + options: [ + '--org', + 'io.flutter.devicelab', + '--template=plugin', + '--ios-language=objc', + objcPluginName, + ], + ); + }); + + final String objcPodspecPath = path.join(tempDir.path, objcPluginName, 'ios', '$objcPluginName.podspec'); + section('Lint Objective-C iOS plugin as framework'); + await inDirectory(tempDir, () async { + await exec( + 'pod', + [ + 'lib', + 'lint', + objcPodspecPath, + '--allow-warnings', + ], + ); + }); + + section('Lint Objective-C iOS plugin as library'); + await inDirectory(tempDir, () async { + await exec( + 'pod', + [ + 'lib', + 'lint', + objcPodspecPath, + '--allow-warnings', + '--use-libraries', + ], + ); + }); + + return TaskResult.success(null); + } catch (e) { + return TaskResult.failure(e.toString()); + } finally { + rmTree(tempDir); + } + }); +} diff --git a/packages/flutter_tools/templates/plugin/ios.tmpl/projectName.podspec.tmpl b/packages/flutter_tools/templates/plugin/ios.tmpl/projectName.podspec.tmpl index ea668b66ef..faecbe5972 100644 --- a/packages/flutter_tools/templates/plugin/ios.tmpl/projectName.podspec.tmpl +++ b/packages/flutter_tools/templates/plugin/ios.tmpl/projectName.podspec.tmpl @@ -1,5 +1,6 @@ # -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint {{projectName}}.podspec' to validate before publishing. # Pod::Spec.new do |s| s.name = '{{projectName}}' @@ -15,7 +16,8 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' + s.platform = :ios, '8.0' - s.ios.deployment_target = '8.0' + # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } end - diff --git a/packages/flutter_tools/templates/plugin/macos.tmpl/projectName.podspec.tmpl b/packages/flutter_tools/templates/plugin/macos.tmpl/projectName.podspec.tmpl index 02864f667e..ada388da68 100644 --- a/packages/flutter_tools/templates/plugin/macos.tmpl/projectName.podspec.tmpl +++ b/packages/flutter_tools/templates/plugin/macos.tmpl/projectName.podspec.tmpl @@ -1,5 +1,6 @@ # -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint {{projectName}}.podspec' to validate before publishing. # Pod::Spec.new do |s| s.name = '{{projectName}}' @@ -15,7 +16,6 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.dependency 'FlutterMacOS' - s.platform = :osx - s.osx.deployment_target = '10.11' + s.platform = :osx, '10.11' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } end -