Loïc Sharma
37e79eb90c
[iOS/macOS] Add Xcode error if dev dependencies are incorrect (#165916)
Recently, the Flutter tool was updated to remove dev dependencies for
release builds and add dev dependencies for debug/profile builds.
However when building from Xcode directly, dev dependencies are not
enabled/disabled. As a result, it was possible for debug builds to not
have dev dependencies (or vice versa). Example:
1. `flutter build ios --release` - Release build using Flutter tool.
Disables dev dependencies
2. `open ios/Runner.xcworkspace` - Open the iOS project in Xcode
3. In Xcode, **Product** > **Build** - Do a debug build
Previously, step 3 would result in debug artifacts that are missing dev
dependencies. This PR now makes this an error:

Part of https://github.com/flutter/flutter/issues/163874
## Implementation
The Flutter tool now writes a `FLUTTER_DEV_DEPENDENCIES_ENABLED` in the
generated config file. This tracks whether the currently generated
project has dev dependencies.
In the Xcode build:
1. The Xcode backend script passes the
`FLUTTER_DEV_DEPENDENCIES_ENABLED` config to `flutter assemble` using
the `DevDependenciesEnabled` define
6. The new `CheckDevDependencies` target verifies dev dependencies:
1. It checks if the dev dependencies status is correct for the current
build mode
2. It checks whether the app has dev dependencies by reading the
`.flutter-plugins-dependencies` file. If the app has no dev
dependencies, the error is suppressed.
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-04-11 19:34:38 +00:00
..
2025-02-12 19:42:39 +00:00
2024-12-19 20:06:21 +00:00
2025-01-23 19:39:32 +00:00
2025-02-10 21:53:55 +00:00
2025-01-29 21:31:59 +00:00
2024-01-24 23:11:12 +00:00
2023-08-09 10:57:35 -07:00
2023-08-09 10:57:35 -07:00
2024-12-19 20:06:21 +00:00
2023-03-31 20:54:51 +00:00
2023-03-31 20:54:51 +00:00
2024-12-19 20:06:21 +00:00
2022-11-29 01:59:19 +00:00
2022-08-26 14:06:26 -07:00
2023-01-18 22:33:49 +00:00
2024-12-19 20:06:21 +00:00
2022-08-26 15:29:14 +00:00
2025-02-10 21:53:55 +00:00
2025-03-24 22:43:22 +00:00
2025-02-06 18:40:25 +00:00
2025-03-06 21:21:52 +00:00
2022-09-08 22:39:07 +00:00
2022-08-26 14:06:26 -07:00
2022-07-20 19:13:06 +00:00
2022-08-25 23:35:00 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2022-08-26 18:50:07 +00:00
2023-12-04 19:23:26 +00:00
2023-12-04 19:23:26 +00:00
2023-01-19 21:29:19 +00:00
2024-12-19 20:06:21 +00:00
2022-08-17 09:38:41 -04:00
2024-12-19 20:06:21 +00:00
2023-08-14 18:47:08 +00:00
2023-08-14 18:47:08 +00:00
2023-08-14 18:47:08 +00:00
2023-05-15 19:14:58 +00:00
2023-08-14 18:47:08 +00:00
2023-08-14 18:47:08 +00:00
2023-08-14 18:47:08 +00:00
2024-12-19 20:06:21 +00:00
2025-04-10 21:38:08 +00:00
2025-04-10 21:38:08 +00:00
2023-08-14 18:47:08 +00:00
2023-08-14 18:47:08 +00:00
2025-03-02 00:54:33 +00:00
2024-01-26 01:07:08 +00:00
2024-07-29 20:15:25 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2025-02-19 20:37:35 +00:00
2025-02-19 20:37:35 +00:00
2025-02-24 04:40:29 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2023-05-10 00:50:11 +00:00
2022-09-07 20:19:20 +00:00
2022-09-07 20:19:20 +00:00
2024-12-19 20:06:21 +00:00
2025-04-10 15:11:10 +00:00
2022-08-26 17:29:39 +00:00
2022-09-08 16:49:17 +00:00
2025-02-10 21:53:55 +00:00
2024-12-19 20:06:21 +00:00
2022-08-17 09:38:41 -04:00
2022-08-17 09:38:41 -04:00
2024-12-19 20:06:21 +00:00
2023-04-21 22:33:07 +00:00
2022-09-14 23:44:14 +00:00
2022-08-17 09:38:41 -04:00
2022-08-26 14:06:26 -07:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2025-02-10 21:53:55 +00:00
2025-04-08 18:37:14 +00:00
2024-12-19 20:06:21 +00:00
2025-02-10 21:53:55 +00:00
2024-12-19 20:06:21 +00:00
2022-08-24 18:04:42 +00:00
2022-08-17 09:38:41 -04:00
2024-12-19 20:06:21 +00:00
2023-10-12 15:53:00 +00:00
2022-10-18 22:26:16 +00:00
2022-10-20 03:23:12 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2022-08-26 14:06:26 -07:00
2025-02-04 00:07:19 +00:00
2025-02-04 00:07:19 +00:00
2022-09-26 17:45:19 +00:00
2025-02-07 01:27:47 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-10-31 21:31:07 +00:00
2023-03-10 16:16:30 +00:00
2024-10-31 21:31:07 +00:00
2025-02-24 16:47:12 +00:00
2024-12-19 20:06:21 +00:00
2025-02-12 03:09:05 +00:00
2023-12-07 16:29:11 +00:00
2024-12-19 20:06:21 +00:00
2023-09-10 08:07:13 +00:00
2024-12-19 20:06:21 +00:00
2025-04-11 19:34:38 +00:00
2024-12-19 20:06:21 +00:00
2024-02-15 22:32:38 +00:00
2024-02-15 22:32:38 +00:00
2024-12-19 20:06:21 +00:00
2024-02-15 22:32:38 +00:00
2024-02-15 22:32:38 +00:00
2024-02-15 22:32:38 +00:00
2024-12-19 20:06:21 +00:00
2022-07-21 20:01:06 +00:00
2023-03-23 11:56:23 -07:00
2022-06-30 14:54:07 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2022-09-08 19:35:20 +00:00
2022-08-17 09:38:41 -04:00
2025-02-11 02:12:49 +00:00
2024-03-16 05:44:21 +00:00
2024-07-08 21:01:58 +00:00
2023-06-23 18:40:17 -07:00
2023-03-10 16:16:30 +00:00
2025-02-10 21:53:55 +00:00
2025-02-10 21:53:55 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2025-02-10 21:53:55 +00:00
2025-02-10 21:53:55 +00:00
2024-05-29 22:19:10 +00:00
2024-05-29 22:19:10 +00:00
2022-12-12 22:39:49 +00:00
2023-01-13 19:17:12 +00:00
2022-12-12 22:39:49 +00:00
2022-12-12 22:39:49 +00:00
2023-01-13 19:17:12 +00:00
2022-11-08 23:00:04 +00:00
2022-12-08 14:05:53 -08:00
2022-12-06 21:57:25 +00:00
2025-02-10 21:53:55 +00:00
2023-04-24 23:25:28 +00:00
2022-12-20 14:15:39 -08:00
2024-12-19 20:06:21 +00:00
2023-11-29 08:41:27 +00:00
2024-12-19 20:06:21 +00:00
2022-12-22 02:47:11 +00:00
2022-08-17 16:16:02 +00:00
2025-04-10 21:38:08 +00:00
2025-04-10 21:38:08 +00:00
2023-08-14 18:47:08 +00:00
2023-08-14 18:47:08 +00:00
2024-12-19 21:59:39 +00:00
2023-08-31 19:03:14 +00:00
2023-08-31 19:03:14 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2024-12-19 20:06:21 +00:00
2023-02-13 22:33:19 +00:00
2024-10-31 21:31:07 +00:00
2022-08-25 18:54:20 -07:00