Repository navigation
Test flet build settings for Android, iOS and macOS, and fix the bugs found - #7036
Open
ndonkoHenri wants to merge 11 commits into
Open
ndonkoHenri wants to merge 11 commits into
ndonkoHenri wants to merge 11 commits into
Conversation
Contributor
|
Sorry @ndonkoHenri, you've used your own review budget of 250,000 diff characters for the last 7 days. You can request another review in 13 hours and 22 minutes by commenting |
Deploying flet-website-v2 with
|
| Latest commit: |
31a9a5f
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://28804c6d.flet-website-v2.pages.dev |
| Branch Preview URL: | https://test-android-build-settings.flet-website-v2.pages.dev |
… methods Permissions, features, meta-data, providers, Gradle properties and ProGuard rules were resolved inline in setup_template_data, and the signing environment and extract_packages inside the methods that run the build, so none of them could be tested without running a build. Each is now a get_android_*() method with the same logic and messages; the rationale comments became their docstrings.
Cover defaults, permission bundles, project settings, CLI options, validation errors and the rendered AndroidManifest.xml, gradle.properties, proguard-rules.pro, build.gradle.kts and launcher background for permissions, features, meta-data, providers, Gradle properties, ProGuard rules, SDK versions, ABIs, signing, extract_packages and the adaptive icon background.
Cover the Info.plist settings and template, the Podfile's permission macros, signing and export settings, and the signing values in project.pbxproj and exportOptions.plist. Templates are rendered from a context processed by cookiecutter, like a real build.
…their own methods
exportOptions.plist wrote values unescaped, so thinning = "<none>" made an invalid plist, and the options passed through cookiecutter, which turned numbers into strings and rendered {{ }} in values. The options now reach the template through _options and are escaped, and options that aren't a table or that a plist can't hold fail the build.
Move the bundles to a module constant, so the --permissions choices and the docs read the same list as the build.
Flutter's Swift Package Manager migration copies the scheme's BuildableName back unescaped, which made the scheme invalid XML. The scheme templates now use a fixed name, which nothing in the build reads.
ndonkoHenri
force-pushed
the
test/android-build-settings
branch
from
November 2, 2026 00:46
4042bad to
31a9a5f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #7031, so this diff shows only its own changes.
Pins down what
flet buildwrites for Android, iOS and macOS, and fixes the bugs that turned up while doing it.Fixes
flet build ipawith special characters in export options: a[tool.flet.ios.export_options]value containing<,>or&, such asthinning = "<none>", produced an invalidexportOptions.plist, and numbers were written as strings.flet build macoswith&in the name: a product or artifact name containing&failed withScheme Runner is not currently configured for the build action. Flutter's Swift Package Manager migration readsBuildableNamewith an XML parser and writes it back unescaped, which breaks the scheme even when the value is escaped. The schemes now use a fixedRunner.app; nothing else reads that value.--permissions biometric: the CLI rejected this bundle, although it works frompyproject.toml. The bundles are now defined once inCROSS_PLATFORM_PERMISSIONS, which the CLI choices and the docs both use.Breaking change
Custom
--templatetemplates must read the iOS export options fromcookiecutter._options.ios_export_options(wascookiecutter.ios_export_options). Templates still using the old name leave them out ofexportOptions.plist, without an error.Refactor and tests
setup_template_datais split into methods for the Android, Info.plist, macOS entitlement and iOS signing settings, andtest_build_android.py,test_build_ios.pyandtest_build_macos.pynow cover those settings.build_base.pyhas a large diff, mostly moved code.Testing
&in the name:product = "Probe & Co"failedflet build macosbefore the fix, andProbe Cobuilt as a control. After it, the macOS build succeeded and the app launched, and an iOS simulator build withartifact = "Probe & Co"succeeded.exportOptions.plistfailedplistlibbefore the fix, and now passesplistlibandplutil -lint, withthinningas<none>and a number written as an integer.Not tested: an actual IPA export, because the test Mac has no valid signing identity. iOS wasn't built with
&before the fix, so the failure there is inferred from the same migration.A misspelled name in
pyproject.tomlpermissionsis still silently ignored.Reviewing
CHANGELOG.mdalso tidies a few unrelated entries: it folds theInteractiveViewerentry onto one line, moves the Flutter bump to Improvements, and removes stray blank lines.Summary by Sourcery
Harden and comprehensively test platform-specific
flet buildsettings and generated project files.Bug Fixes:
Enhancements:
Documentation:
Tests:
Chores: