Revert pod install skip revert (#13774)
* Revert "Revert "Enable developers to run pod from terminal directly and skip pod install if possible. (#13374)" (#13770)"
This reverts commit 0759043e47395b692bff7d6aa045c1ecb06627eb.
* some nits on cocoapods code
* put back the FLUTTER_FRAMEWORK_DIR env variable
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index e3ead3b..2ca8109 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -254,14 +254,9 @@
// copied over to a location that is suitable for Xcodebuild to find them.
final Directory appDirectory = fs.directory(app.appDirectory);
await _addServicesToBundle(appDirectory);
- final bool hasFlutterPlugins = injectPlugins();
-
- if (hasFlutterPlugins)
- await cocoaPods.processPods(
- appIosDir: appDirectory,
- iosEngineDir: flutterFrameworkDir(buildInfo.mode),
- isSwift: app.isSwift,
- );
+ final InjectPluginsResult injectPluginsResult = injectPlugins();
+ final bool hasFlutterPlugins = injectPluginsResult.hasPlugin;
+ final String previousGeneratedXcconfig = readGeneratedXcconfig(app.appDirectory);
updateXcodeGeneratedProperties(
projectPath: fs.currentDirectory.path,
@@ -271,6 +266,17 @@
previewDart2: buildInfo.previewDart2,
);
+ if (hasFlutterPlugins) {
+ final String currentGeneratedXcconfig = readGeneratedXcconfig(app.appDirectory);
+ await cocoaPods.processPods(
+ appIosDir: appDirectory,
+ iosEngineDir: flutterFrameworkDir(buildInfo.mode),
+ isSwift: app.isSwift,
+ pluginOrFlutterPodChanged: (injectPluginsResult.hasChanged
+ || previousGeneratedXcconfig != currentGeneratedXcconfig),
+ );
+ }
+
final List<String> commands = <String>[
'/usr/bin/env',
'xcrun',
@@ -355,7 +361,17 @@
}
}
-Future<Null> diagnoseXcodeBuildFailure(XcodeBuildResult result, BuildableIOSApp app) async {
+String readGeneratedXcconfig(String appPath) {
+ final String generatedXcconfigPath =
+ fs.path.join(fs.currentDirectory.path, appPath, 'Flutter','Generated.xcconfig');
+ final File generatedXcconfigFile = fs.file(generatedXcconfigPath);
+ if (!generatedXcconfigFile.existsSync())
+ return null;
+ return generatedXcconfigFile.readAsStringSync();
+}
+
+Future<Null> diagnoseXcodeBuildFailure(
+ XcodeBuildResult result, BuildableIOSApp app) async {
if (result.xcodeBuildExecution != null &&
result.xcodeBuildExecution.buildForPhysicalDevice &&
result.stdout?.contains('BCEROR') == true &&
@@ -369,7 +385,8 @@
// Make sure the user has specified one of:
// DEVELOPMENT_TEAM (automatic signing)
// PROVISIONING_PROFILE (manual signing)
- !(app.buildSettings?.containsKey('DEVELOPMENT_TEAM')) == true || app.buildSettings?.containsKey('PROVISIONING_PROFILE') == true) {
+ !(app.buildSettings?.containsKey('DEVELOPMENT_TEAM')) == true
+ || app.buildSettings?.containsKey('PROVISIONING_PROFILE') == true) {
printError(noDevelopmentTeamInstruction, emphasis: true);
return;
}