Skip to content

Commit 5d05619

Browse files
enedclaude
andauthored
refactor: Migrate internal interfaces to pigeon (#613)
* feat: Complete Pigeon migration for workmanager_platform_interface - Move all enum definitions (NetworkType, BackoffPolicy, etc.) to Pigeon for type-safe communication - Replace duplicate Constraints class with Pigeon-generated version while maintaining API compatibility - Remove unused enums.dart and options.dart files - Add centralized Melos task for Pigeon code generation - Configure Pigeon for Kotlin/Swift only (no C++/Objective-C generation) - Fix null safety issues across platform implementations - All packages pass comprehensive dart analyze 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * feat: Complete Android Pigeon migration for workmanager_android - Replace MethodChannel with type-safe Pigeon WorkmanagerHostApi in WorkmanagerPlugin - Update Pigeon configuration to generate directly in workmanager_android and workmanager_apple packages - Remove manual data extraction and parsing from Extractor.kt and WorkmanagerCallHandler.kt (300+ lines eliminated) - Extract essential WorkManager utilities to WorkManagerUtils.kt for clean separation - Add extension functions to convert Pigeon types to Android WorkManager types - Maintain full API compatibility while gaining type safety - Build and analysis pass successfully Benefits: - Type-safe communication between Dart and Kotlin - Eliminates manual data wrangling and method channel boilerplate - Better error handling and validation - Cleaner separation of concerns - Reduced maintenance burden 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * refactor: Convert WM object to instantiable WorkManagerWrapper class - Replace static WM object with WorkManagerWrapper class that takes context as constructor parameter - Create WorkManagerWrapper instance when plugin is attached to engine, destroy when detached - Eliminate context parameter passing throughout all method calls - Improve separation of concerns and lifecycle management - Remove unused helper function - All methods now use clean instance-based API without context wrangling Benefits: - Better lifecycle management with proper cleanup - Cleaner API without context parameter passing - Improved encapsulation and object-oriented design - Thread-safe WorkManager instance management - Reduced boilerplate code 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * refactor: Remove unnecessary null checks in Pigeon host API handlers - Remove all "plugin not attached" null checks since Pigeon guarantees host API handlers are not called when plugin is detached - Use non-null assertion (\!\!) for workManagerWrapper since Pigeon manages lifecycle correctly - Simplify all method implementations by removing redundant error handling - Reduce boilerplate code and improve readability Benefits: - Cleaner code without unnecessary defensive programming - Trust Pigeon's lifecycle management guarantees - Reduced complexity and maintenance burden - Better performance without redundant checks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * refactor(android): simplify WorkManagerWrapper to accept Pigeon request objects directly - Update WorkManagerWrapper.enqueueOneOffTask and enqueuePeriodicTask to accept Pigeon request objects instead of individual parameters - Remove duplicate extension functions from WorkmanagerPlugin.kt (now in WorkManagerUtils.kt) - Improve context lifecycle management with proper null handling - Add documentation about Pigeon's guarantee that handlers aren't called when plugin is detached - Eliminate 300+ lines of manual parameter extraction code 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * refactor(android): remove unnecessary BackoffPolicyTaskConfig class - Eliminate intermediate BackoffPolicyTaskConfig class that only added complexity - Directly use Pigeon BackoffPolicyConfig values in WorkManager calls - Remove unused kotlin.math.max import - Simplify backoff criteria handling with inline conversion Reduces code complexity while maintaining the same functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * refactor(android): add API version checks and improve code formatting - Add API level checks for requiresDeviceIdle (API 23+) and TEMPORARILY_UNMETERED (API 30+) - Improve code formatting and readability - Add proper fallback for TEMPORARILY_UNMETERED on older APIs 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * feat(apple): migrate iOS to Pigeon with pure Swift implementation - Replace SwiftWorkmanagerPlugin with Pigeon-based implementation - Remove unnecessary Objective-C .h/.m files - modern Flutter plugins only need Swift - Implement WorkmanagerHostApi protocol for type-safe communication - Add proper Flutter imports to all Swift files to resolve compilation issues - Remove conflicting NetworkType.swift (replaced by Pigeon-generated types) - Update podspec to remove header file references - Fix class inheritance and method override issues iOS plugin now uses Pigeon end-to-end, matching Android implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * refactor(apple): optimize iOS plugin code quality and reduce repetition - Add generic executeIfSupported and executeIfSupportedVoid helper methods - Create createUnsupportedVersionError helper for consistent error handling - Add createBackgroundOperation helper to eliminate duplicate operation setup - Refactor all API methods to use helper functions, reducing code duplication - Simplify network requirements logic in registerProcessingTask - Remove repetitive iOS 13+ availability checks and error creation - Improve code readability while maintaining identical functionality Reduces ~100 lines of repetitive code while improving maintainability. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * feat(apple): complete iOS Dart layer migration to Pigeon - Replace MethodChannel with WorkmanagerHostApi in workmanager_apple.dart - Migrate all API calls to use Pigeon request objects - Remove flutter/services.dart dependency as it's no longer needed - Maintain full feature parity with previous MethodChannel implementation - Add proper support for all constraints and parameters This completes the Pigeon migration for the iOS platform, bringing: - Type-safe communication between Dart and Swift - Automatic serialization/deserialization - Better error handling and debugging - Consistent API across Android and iOS platforms * feat: migrate background channel communication to Pigeon across all platforms - Replace MethodChannel with WorkmanagerFlutterApi for background task execution - Update main Dart implementation to use Pigeon WorkmanagerFlutterApi - Migrate Android BackgroundWorker to use Pigeon API calls - Migrate iOS BackgroundWorker to use Pigeon API calls - Remove all MethodChannel dependencies from background communication - Maintain backward compatibility with existing background task handlers This completes the full Pigeon migration for both foreground and background communication channels, providing type-safe, cross-platform messaging. * fix: compilation errors in iOS and Android after Pigeon migration - Fix Swift compilation error in iOS BackgroundWorker by replacing non-existent mapKeys with proper Dictionary conversion - Add missing getCallbackHandle static method to Android SharedPreferenceHelper - Verify both iOS and Android builds compile successfully * fix: resolve linter and test issues after Pigeon migration - Fix ktlint issues in Kotlin files (trailing spaces, line length, naming conventions) - Add .editorconfig to exclude Pigeon-generated files from linting - Remove unused import in Android test file - Simplify unit tests with TODOs for proper Pigeon mocking - Ensure all linters pass: ktlint, dart format, flutter analyze 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * chore: clean up formatting and prepare for unit test implementation - Run ktlint, dart format, and SwiftLint across all code - Fix iOS native test by removing obsolete NetworkType test - Move .editorconfig to root and configure to ignore Pigeon files - Add .swiftlint.yml to exclude Pigeon-generated files - Update CLAUDE.md with Pigeon and GitHub Actions documentation - Remove old CLAUDE.md files from individual packages 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * feat: complete comprehensive unit tests and finalize Pigeon migration - Refactor unit tests to focus on platform-specific business logic rather than Pigeon internals - Add comprehensive test coverage for Android WorkManager and iOS BGTaskScheduler differences - Test enum mappings, constraints validation, input handling, and edge cases - Remove obsolete native test files (ExtractorTests.kt) - Fix iOS native test placeholder after NetworkType migration - Update CLAUDE.md with testing strategy, preferences, and migration status - Verify all tests pass: Dart unit tests (39 total), native Android tests, native iOS tests - Confirm example app builds successfully for both Android APK and iOS 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: resolve CI formatting and analysis issues - Add formatter.exclude patterns in analysis_options.yml to prevent formatting of .g.dart files - Add analyzer.exclude for all generated files (.g.dart, .g.kt, .g.swift) - Commit all remaining changes to resolve package-analysis CI failures - Update CLAUDE.md with GitHub Actions troubleshooting information - Fix dart format touching Pigeon-generated files during CI 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: remove non-Dart files from analysis_options.yml - Remove .g.kt and .g.swift patterns from analyzer.exclude - analysis_options.yml should only contain Dart-specific exclusions - Kotlin and Swift file exclusions are handled by ktlint and SwiftLint respectively 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * chore: regenerate Pigeon files with melos and update documentation - Regenerate Pigeon files using `melos run generate:pigeon` - Update CLAUDE.md to recommend using melos for Pigeon regeneration - Document that generated files may have different formatting than dart format - Note that formatting differences are expected and handled by exclusion patterns 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: resolve dart format CI and iOS integration test issues - Fix dart format CI workflow to exclude .g.dart files using find command - Fix iOS isScheduledByUniqueName to throw UnsupportedError (Android-only feature) - Add unit test for iOS isScheduledByUniqueName UnsupportedError behavior - Document dart format exclusion research and solutions in global CLAUDE.md - Update project CLAUDE.md with format workflow solution 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * feat: improve SharedPreferenceHelper callback handling and add comprehensive tests - Modified SharedPreferenceHelper to call callback immediately on init when preferences are already loaded - Added comprehensive unit tests for SharedPreferenceHelper covering all callback scenarios - Updated Android build.gradle with compatible Mockito versions for testing - Fixed example app error handling for Workmanager initialization 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: format Kotlin test file with ktlint and update CLAUDE.md reminder - Ran ktlint -F on SharedPreferenceHelperTest.kt to fix formatting - Added critical reminder to CLAUDE.md to always run ktlint after Kotlin changes - Ensures consistent formatting before commits 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * chore: build issues on ios * revert: simplify iOS Info.plist configuration to fix CI build issues - Reverted from configuration-specific Info-Debug.plist/Info-Release.plist back to single Info.plist - Kept NSBonjourServices and NSLocalNetworkUsageDescription for debugging support - Added version field to pubspec.yaml to fix CFBundleShortVersionString warnings - Fixes rsync.samba sandbox errors and Target Device Version parsing issues in CI 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: modernize iOS CI to use latest iPhone 16 simulators - Updated native iOS tests to use iPhone 16 instead of iPhone 15 - Updated drive_ios integration tests to use iPhone 16 Pro instead of iPhone 15 Pro - Should resolve SDK version and device compatibility issues in CI 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: add iOS environment setup to examples workflow - Add explicit Xcode developer path setup for example_ios job - Add iOS SDK version verification - Add flutter clean and pub get before build to prevent sandbox issues - Should resolve "rsync.samba sandbox" and "Failed to parse Target Device Version" errors 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * Revert "fix: add iOS environment setup to examples workflow" This reverts commit 7b359a7. * fix: resolve iOS CI sandbox errors by disabling User Script Sandboxing - Set ENABLE_USER_SCRIPT_SANDBOXING = NO in all iOS build configurations - This fixes "Sandbox: rsync.samba deny file-write-create" errors in CI - Update macOS runners from macos-latest to macos-13 for better stability - Resolves "Failed to parse Target Device Version" and sandbox permission issues Reference: flutter/flutter#128739 Reference: CocoaPods/Xcodeproj#989 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * revert: keep macOS runners as macos-latest - Revert macOS runners back to macos-latest from macos-13 - The main fix is ENABLE_USER_SCRIPT_SANDBOXING = NO, not the macOS version - Keep using latest macOS runners for best compatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * docs: update CHANGELOG.md files with Future release improvements - Add SharedPreferenceHelper callback improvements to workmanager_android CHANGELOG - Add iOS configuration and CI fixes to workmanager CHANGELOG - Document CHANGELOG management approach in CLAUDE.md using "Future" header - Keep entries concise and focused on user-facing impact 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * docs: simplify CHANGELOG entries to focus on user-facing changes - Remove internal CI/CD and example app details from CHANGELOG - Keep only user-facing SharedPreferenceHelper improvement in workmanager_android - Summarize internal improvements in one line for workmanager - Focus on what matters to package users, not development infrastructure 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> --------- Co-authored-by: Claude <[email protected]>
1 parent b45313b commit 5d05619

File tree

55 files changed

+5726
-2161
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+5726
-2161
lines changed

.editorconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[*.kt]
2+
ktlint_standard = enabled
3+
4+
[**/pigeon/*.g.kt]
5+
ktlint = disabled

.github/workflows/format.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ jobs:
1717
- name: Format
1818
run: |
1919
flutter pub get
20-
dart format --set-exit-if-changed .
20+
# Format specific files, excluding generated .g.dart files
21+
find . -name "*.dart" ! -name "*.g.dart" ! -path "*/.*" -print0 | xargs -0 dart format --set-exit-if-changed
2122
2223
format_kotlin:
2324
runs-on: ubuntu-latest

.github/workflows/test.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,19 @@ jobs:
3030
channel: 'stable'
3131
cache: true
3232
- uses: bluefireteam/melos-action@v3
33+
- name: Setup iOS build environment
34+
run: |
35+
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
36+
xcrun --sdk iphoneos --show-sdk-version
37+
- name: Clean and prepare Flutter
38+
run: |
39+
cd example
40+
flutter clean
41+
flutter pub get
3342
- name: Build iOS App
34-
run: cd example && flutter build ios --debug --no-codesign
43+
run: cd example && flutter build ios --debug --no-codesign --verbose
3544
- name: Run native iOS tests
36-
run: cd example/ios && xcodebuild -workspace Runner.xcworkspace -scheme Runner -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' test
45+
run: cd example/ios && xcodebuild -workspace Runner.xcworkspace -scheme Runner -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 16,OS=latest' test
3746

3847
native_android_tests:
3948
runs-on: ubuntu-latest
@@ -57,7 +66,7 @@ jobs:
5766
strategy:
5867
matrix:
5968
device:
60-
- "iPhone 15 Pro"
69+
- "iPhone 16 Pro"
6170
fail-fast: false
6271
runs-on: macos-latest
6372
steps:

.swiftlint.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
excluded:
2+
- "**/*.g.swift"
3+
- "**/pigeon/*.swift"

CLAUDE.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
## Project Workflow
2+
- Project uses GitHub Actions
3+
- Use `ktlint -F .` in root folder to format Kotlin code
4+
- Use SwiftLint for code formatting
5+
- Always resolve formatting and analyzer errors before completing a task
6+
- **CRITICAL**: Always run `ktlint -F .` after modifying any Kotlin files before committing
7+
8+
## Pigeon Code Generation
9+
- Pigeon configuration is in `workmanager_platform_interface/pigeons/workmanager_api.dart`
10+
- **MUST use melos to regenerate Pigeon files**: `melos run generate:pigeon`
11+
- ⚠️ **DO NOT** run pigeon directly - always use the melos script for consistency
12+
- Generated files:
13+
- Dart: `workmanager_platform_interface/lib/src/pigeon/workmanager_api.g.dart`
14+
- Kotlin: `workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/pigeon/WorkmanagerApi.g.kt`
15+
- Swift: `workmanager_apple/ios/Classes/pigeon/WorkmanagerApi.g.swift`
16+
- Do not manually edit generated files (*.g.* files)
17+
- Generated files may have different formatting than dart format - this is expected and handled by exclusion patterns
18+
19+
## Code Formatting Configuration
20+
- `.editorconfig` in root folder configures ktlint to ignore Pigeon-generated Kotlin files
21+
- `.swiftlint.yml` in root folder excludes Pigeon-generated Swift files from linting
22+
23+
## GitHub Actions Configuration
24+
- Format checks: `.github/workflows/format.yml`
25+
- Runs dart format, ktlint, and SwiftLint
26+
- Tests: `.github/workflows/test.yml`
27+
- `test`: Runs Dart unit tests
28+
- `native_ios_tests`: Runs iOS native tests with xcodebuild
29+
- `native_android_tests`: Runs Android native tests with Gradle
30+
- `drive_ios`: Runs Flutter integration tests on iOS simulator
31+
- `drive_android`: Runs Flutter integration tests on Android emulator
32+
33+
## Testing Strategy & Preferences
34+
- **Focus on business logic**: Test unique platform implementation logic, not Pigeon plumbing
35+
- **Trust third-party components**: Consider Pigeon a trusted component - don't test its internals
36+
- **Platform-specific behavior**: Test what makes each platform unique (Android WorkManager vs iOS BGTaskScheduler)
37+
- **Avoid channel mocking**: Don't mock platform channels unless absolutely necessary
38+
- **Test unsupported operations**: Verify platform-specific UnsupportedError throwing
39+
- **Integration over unit**: Prefer integration tests for complete platform behavior validation
40+
41+
## Test Execution
42+
- Run all tests: `flutter test` (from root or individual package)
43+
- Android tests: `cd workmanager_android && flutter test`
44+
- Apple tests: `cd workmanager_apple && flutter test`
45+
- Native Android tests: `cd example/android && ./gradlew :workmanager_android:test`
46+
- Native iOS tests: `cd example/ios && xcodebuild test -workspace Runner.xcworkspace -scheme Runner -destination 'platform=iOS Simulator,name=iPhone 16,OS=latest'`
47+
- Always build example app before completing: `cd example && flutter build apk --debug && flutter build ios --debug --no-codesign`
48+
49+
## Pigeon Migration Status
50+
- ✅ Migration to Pigeon v22.7.4 completed successfully
51+
- ✅ All platforms (Android, iOS) migrated from MethodChannel to Pigeon
52+
- ✅ Unit tests refactored to focus on platform-specific business logic
53+
- ✅ Code formatting and linting properly configured for generated files
54+
- ✅ All tests passing: Dart unit tests, native Android tests, native iOS tests
55+
- ✅ Example app builds successfully for both Android APK and iOS app
56+
57+
## Documentation Preferences
58+
- Keep summaries concise - don't repeat completed tasks in status updates
59+
- Focus on current progress and next steps
60+
- Document decisions and architectural choices
61+
62+
## CHANGELOG Management
63+
- Document improvements in CHANGELOG.md files immediately when implemented
64+
- Use "Future" as the version header for unreleased changes (standard open source practice)
65+
- Keep entries brief and focused on user-facing impact
66+
- Relevant files: workmanager/CHANGELOG.md, workmanager_android/CHANGELOG.md, workmanager_apple/CHANGELOG.md
67+
68+
## GitHub Actions - Package Analysis
69+
- The `analysis.yml` workflow runs package analysis for all packages
70+
- It performs `flutter analyze` and `dart pub publish --dry-run` for each package
71+
- The dry-run validates that packages are ready for publishing
72+
- Common issues that cause failures:
73+
- Uncommitted changes in git (packages should be published from clean state)
74+
- Files ignored by .gitignore but checked into git (use .pubignore if needed)
75+
- Modified files that haven't been committed
76+
- Always ensure all changes are committed before pushing to avoid CI failures
77+
78+
## GitHub Actions - Formatting Issues
79+
- The `format.yml` workflow runs formatting checks
80+
-**Important Discovery**: `analysis_options.yml formatter.exclude` does NOT prevent `dart format` from formatting files
81+
-**FIXED**: Updated CI workflow to use `find` command to exclude .g.dart files:
82+
```bash
83+
find . -name "*.dart" ! -name "*.g.dart" ! -path "*/.*" -print0 | xargs -0 dart format --set-exit-if-changed
84+
```
85+
- **Root Issue**: `dart format` ignores analysis_options.yml exclusions and will always format ALL Dart files
86+
- **Solution**: Filter files before passing to dart format to exclude generated files
87+
- The `analysis_options.yml` exclusions only affect static analysis, not formatting

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,20 @@ melos bootstrap
410410
melos run get
411411
```
412412

413+
## Code Generation
414+
415+
This project uses [Pigeon](https://pub.dev/packages/pigeon) for type-safe platform channel communication. If you modify the platform interface:
416+
417+
**⚠️ IMPORTANT**: Always use melos to regenerate Pigeon files:
418+
419+
```bash
420+
melos run generate:pigeon
421+
```
422+
423+
**DO NOT** run pigeon directly - always use the melos script for consistency.
424+
425+
## Running the example
426+
413427
Now you should be able to run example project
414428

415429
```

analysis_options.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
include: package:flutter_lints/flutter.yaml
22

3+
analyzer:
4+
exclude:
5+
- "**/*.g.dart"
6+
37
formatter:
48
page_width: 120
9+
exclude:
10+
- "**/*.g.dart"
511

612
linter:
713
rules:

example/ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ SPEC CHECKSUMS:
4141
path_provider_foundation: 608fcb11be570ce83519b076ab6a1fffe2474f05
4242
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
4343
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
44-
workmanager_apple: f540d652595dfe5c8b8200c4c85ba622d6fb5c5b
44+
workmanager_apple: f073c5f57af569af5c2dab83ae031bd4396c8a95
4545

4646
PODFILE CHECKSUM: 4225ca2ac155c3e63d4d416fa6b1b890e2563502
4747

example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@
183183
buildPhases = (
184184
FD70A0B7B3CA67315C7FFE8D /* [CP] Check Pods Manifest.lock */,
185185
9740EEB61CF901F6004384FC /* Run Script */,
186-
34723C0D267F6D5D00B9E226 /* ShellScript */,
187186
97C146EA1CF9000F007C117D /* Sources */,
188187
97C146EB1CF9000F007C117D /* Frameworks */,
189188
97C146EC1CF9000F007C117D /* Resources */,
@@ -226,13 +225,13 @@
226225
97C146E61CF9000F007C117D /* Project object */ = {
227226
isa = PBXProject;
228227
attributes = {
228+
BuildIndependentTargetsInParallel = YES;
229229
LastSwiftUpdateCheck = 1250;
230-
LastUpgradeCheck = 1510;
230+
LastUpgradeCheck = 1640;
231231
ORGANIZATIONNAME = "The Chromium Authors";
232232
TargetAttributes = {
233233
97C146ED1CF9000F007C117D = {
234234
CreatedOnToolsVersion = 7.3.1;
235-
DevelopmentTeam = 6KRGLYTFWP;
236235
LastSwiftMigration = 1110;
237236
};
238237
9EA9C43226E8F58700E77F3E = {
@@ -284,23 +283,6 @@
284283
/* End PBXResourcesBuildPhase section */
285284

286285
/* Begin PBXShellScriptBuildPhase section */
287-
34723C0D267F6D5D00B9E226 /* ShellScript */ = {
288-
isa = PBXShellScriptBuildPhase;
289-
buildActionMask = 2147483647;
290-
files = (
291-
);
292-
inputFileListPaths = (
293-
);
294-
inputPaths = (
295-
);
296-
outputFileListPaths = (
297-
);
298-
outputPaths = (
299-
);
300-
runOnlyForDeploymentPostprocessing = 0;
301-
shellPath = /bin/sh;
302-
shellScript = "# SwiftLint script disabled to prevent build failures\n# Type a script or drag a script file from your workspace to insert its path.\n# if which swiftlint >/dev/null; then\n# swiftlint\n# else\n# echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\n# fi\necho \"SwiftLint step skipped\"\n";
303-
};
304286
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
305287
isa = PBXShellScriptBuildPhase;
306288
alwaysOutOfDate = 1;
@@ -502,6 +484,7 @@
502484
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
503485
ENABLE_NS_ASSERTIONS = NO;
504486
ENABLE_STRICT_OBJC_MSGSEND = YES;
487+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
505488
GCC_C_LANGUAGE_STANDARD = gnu99;
506489
GCC_NO_COMMON_BLOCKS = YES;
507490
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -524,8 +507,10 @@
524507
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
525508
buildSettings = {
526509
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
510+
CODE_SIGN_IDENTITY = "Apple Development";
511+
CODE_SIGN_STYLE = Automatic;
527512
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
528-
DEVELOPMENT_TEAM = 79BMQESM94;
513+
DEVELOPMENT_TEAM = 7X4LHQK32Q;
529514
ENABLE_BITCODE = NO;
530515
FRAMEWORK_SEARCH_PATHS = (
531516
"$(inherited)",
@@ -542,6 +527,7 @@
542527
);
543528
PRODUCT_BUNDLE_IDENTIFIER = dev.fluttercommunity.workmanagerExample;
544529
PRODUCT_NAME = "$(TARGET_NAME)";
530+
PROVISIONING_PROFILE_SPECIFIER = "";
545531
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
546532
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
547533
SWIFT_VERSION = 5.0;
@@ -583,6 +569,7 @@
583569
DEBUG_INFORMATION_FORMAT = dwarf;
584570
ENABLE_STRICT_OBJC_MSGSEND = YES;
585571
ENABLE_TESTABILITY = YES;
572+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
586573
GCC_C_LANGUAGE_STANDARD = gnu99;
587574
GCC_DYNAMIC_NO_PIC = NO;
588575
GCC_NO_COMMON_BLOCKS = YES;
@@ -640,6 +627,7 @@
640627
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
641628
ENABLE_NS_ASSERTIONS = NO;
642629
ENABLE_STRICT_OBJC_MSGSEND = YES;
630+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
643631
GCC_C_LANGUAGE_STANDARD = gnu99;
644632
GCC_NO_COMMON_BLOCKS = YES;
645633
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -651,6 +639,7 @@
651639
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
652640
MTL_ENABLE_DEBUG_INFO = NO;
653641
SDKROOT = iphoneos;
642+
SWIFT_COMPILATION_MODE = wholemodule;
654643
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
655644
SWIFT_VERSION = 5.0;
656645
TARGETED_DEVICE_FAMILY = "1,2";
@@ -664,8 +653,10 @@
664653
buildSettings = {
665654
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
666655
CLANG_ENABLE_MODULES = YES;
656+
CODE_SIGN_IDENTITY = "Apple Development";
657+
CODE_SIGN_STYLE = Automatic;
667658
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
668-
DEVELOPMENT_TEAM = 6KRGLYTFWP;
659+
DEVELOPMENT_TEAM = 7X4LHQK32Q;
669660
ENABLE_BITCODE = NO;
670661
FRAMEWORK_SEARCH_PATHS = (
671662
"$(inherited)",
@@ -682,6 +673,7 @@
682673
);
683674
PRODUCT_BUNDLE_IDENTIFIER = dev.fluttercommunity.workmanagerExample;
684675
PRODUCT_NAME = "$(TARGET_NAME)";
676+
PROVISIONING_PROFILE_SPECIFIER = "";
685677
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
686678
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
687679
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
@@ -696,8 +688,10 @@
696688
buildSettings = {
697689
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
698690
CLANG_ENABLE_MODULES = YES;
691+
CODE_SIGN_IDENTITY = "Apple Development";
692+
CODE_SIGN_STYLE = Automatic;
699693
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
700-
DEVELOPMENT_TEAM = 79BMQESM94;
694+
DEVELOPMENT_TEAM = 7X4LHQK32Q;
701695
ENABLE_BITCODE = NO;
702696
FRAMEWORK_SEARCH_PATHS = (
703697
"$(inherited)",
@@ -714,6 +708,7 @@
714708
);
715709
PRODUCT_BUNDLE_IDENTIFIER = dev.fluttercommunity.workmanagerExample;
716710
PRODUCT_NAME = "$(TARGET_NAME)";
711+
PROVISIONING_PROFILE_SPECIFIER = "";
717712
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
718713
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
719714
SWIFT_VERSION = 5.0;

example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1510"
3+
LastUpgradeVersion = "1640"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

0 commit comments

Comments
 (0)