flutter/packages/flutter_tools/test/general.shard/ios
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:


![image](https://github.com/user-attachments/assets/621c4a8f-1c19-44b9-8866-93bef6b4a384)

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
..
code_signing_test.dart Save a provisioning profile to flutter config for manual code-signing (#164984) 2025-03-21 20:44:03 +00:00
core_devices_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
devices_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_deploy_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_device_install_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_device_logger_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_device_port_forwarder_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_device_project_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_device_start_nonprebuilt_test.dart Add lldb init file (#164344) 2025-03-06 21:21:52 +00:00
ios_device_start_prebuilt_test.dart Remove the last vestiges of null-unsafety in flutter_tools. (#164026) 2025-02-27 16:31:22 +00:00
ios_project_migration_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
ios_workflow_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
mac_test.dart Refactor writing of package config in tests (#163734) 2025-02-28 08:51:59 +00:00
metal_api_validator_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
simulators_test.dart Remove the last vestiges of null-unsafety in flutter_tools. (#164026) 2025-02-27 16:31:22 +00:00
xcode_debug_test.dart Trim any text before osascript JSON response (#166296) 2025-04-01 15:54:24 +00:00
xcodeproj_test.dart [iOS/macOS] Add Xcode error if dev dependencies are incorrect (#165916) 2025-04-11 19:34:38 +00:00
xcresult_test_data.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00
xcresult_test.dart Auto-format Framework (#160545) 2024-12-19 20:06:21 +00:00