Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add utility to validate Xcode projects' common TestFlight validation issues #99

Open
AliSoftware opened this issue Jun 1, 2024 · 0 comments
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@AliSoftware
Copy link
Contributor

AliSoftware commented Jun 1, 2024

A utility like validate_xcode_project_consistency or whatever could be useful to ensure that some common misconfigurations we encountered in the past wouldn't get us rejected during TestFlight upload.

Why?

In particular, tests around the following would be useful, because such situations won't prevent Xcode from building and won't appear as errors during Xcode compilation and in PRs, and will thus only be noticed at the time we try our first upload to TestFlight after such misconfiguration would be introduced.
And when those TestFlight validation errors happen it's sometimes tricky to debug what the root cause is (because the iTMSTransporter / altool errors are not always clear and sometimes even misleading), while those usually happen when we're in a rush to release a new version and thus need to be unblocked quickly; so better detect those ahead of time instead.

What?

  • Ensure that all the .app and .appex targets all use the same CFBundleVersion and CFBundleShortVersionString values (see example TestFlight upload/validation rejection here)
  • Ensure that none of the app icons (*.xcassets/*.appiconset/*.png) have an alpha channel (see this Tumblr iOS script for inspiration
  • Ensure that the final generated .app bundle doesn't contain nested frameworks, to avoid the issues described in paNNhX-ee-p2. We could use some inspiration from this script, or simply just use find {path-to-final-app} -path '*/Frameworks/**/Frameworks/*' to detect those in the final .app, and print some guidance in the error message to suggest to use "Do Not Embed" setting on the dependent frameworks of the offending target(s).

Alternatives Considered

This sort of check could alternatively be better suited to be implemented by a fastlane action? (either in our release-toolkit, or even better, by contributing to fastlane's core repo to add such checks… either as a separate action, or as a final set of checks that would be run at the end of the gym/build_app action (opt-in via some ConfigItem, maybe?)

@AliSoftware AliSoftware added enhancement New feature or request good first issue Good for newcomers labels Jun 1, 2024
@AliSoftware AliSoftware changed the title Add utility to validate xcode projects common TestFlight validation issues Add utility to validate Xcode projects' common TestFlight validation issues Jun 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

1 participant