Flutter Platform Upgrade to Android 16
Worldwide
We are seeking an experienced Flutter developer to upgrade two production apps to Android 16 with a target SDK of 36. The task involves ensuring compatibility with the latest Android version and resolving any issues that arise during the upgrade process. The ideal candidate will have a strong understanding of Flutter and Android platform upgrades, and be able to deliver high-quality results efficiently. Scope of work (per app) Flutter upgrade 3.32.4 → latest stable; resolve all breaking changes; keep fvm pinning; align CI workflow Flutter version. Android toolchain: AGP/Gradle/Kotlin per table above; Java 11 → 17; google-services → 4.4.4+; remove enableJetifier (App A); explicit targetSdk = 36 in both apps. Dependency upgrades (full lists below): upgrade to latest compatible versions; flag any package that blocks targetSdk 36 and propose replacement/removal. Edge-to-edge migration (mandatory at target 36, no opt-out): migrate legacy themes (App A: Theme.MaterialComponents → Material3 DayNight equivalent, framework Theme.Light.NoTitleBar launch themes; App B: review equivalents); verify every screen incl. bottom sheets, keyboard screens, dialogs, image cropper. 16 KB page-size verification: build release AAB, verify ELF alignment of every bundled .so (llvm-readelf -l, LOAD align 2^14 / check_elf_alignment.sh); deliver a per-library report; upgrade/replace any non-compliant plugin. Regression QA on API 36 emulator and at least one physical Android device (platform views are broken on API 36 emulators — Maps/WebView must be verified on hardware). Critical paths: App A: phone-OTP login, main content flow incl. WebView editor, Stripe payment, push notifications, app-scheme:// deep links, image pick/crop, PDF view, share. App B: OTP + Google/Apple sign-in, background location tracking across app lifecycle (foreground/background/terminated) and battery-optimization states, in-app purchase flow, camera + OCR, speech-to-text, local + push notifications, offline DB (drift) integrity. iOS sanity check: apps must still build and run on iOS after the Flutter upgrade (no iOS feature work in scope). Known risk areas (price these in) App A: html_editor_enhanced 2.7.0 pulls unmaintained flutter_inappwebview 6.1.5 (known Android 15/16 inset issues). It is used only by an internal POC feature — removal of the feature + dependency is pre-approved and is the preferred fix. App A: tenjin_plugin 1.3.0 (pinned, closed-source attribution SDK, exported receiver, native libs) — verify target-36 + 16KB compatibility, bump pin if needed. App A: flutter_stripe 11.5.0 — payment flow must be regression-tested on hardware. App B: flutter_background_geolocation ^5.0.0 + background_fetch (Transistorsoft, licensed) — check vendor's Android 16 guidance; background-location behavior is the app's core feature. App B: in_app_purchase 3.2.3 / in_app_purchase_android 0.4.0+5 — verify the bundled Play Billing Library version meets Play's current billing deprecation policy; upgrade if required. App B: sqlite3_flutter_libs ^0.5.0 (native sqlite — 16KB relevant), google_mlkit_text_recognition 0.15.0, camera 0.11, flutter_local_notifications 17.x (current major is 19), file_picker 8.x, geolocator 10.x (current major 14), app_settings 5.x (App A already on 6.x). Both: permission_handler 11.x → 12.x (permission-model changes), image_cropper 11 (UCrop activity uses a legacy AppCompat theme + portrait lock — verify under edge-to-edge). Orientation: portrait lock is ignored on sw≥600dp at target 36. Tablet layout polish is out of scope, but the apps must not crash in landscape/large-screen; report any breakage found. Full dependency lists App A (direct deps, current) go_router 15.1.3, flutter_screenutil 5.9.3, equatable, flutter_bloc 9.1.1, another_flushbar, flutter_gen 5.10, flutter_svg 2.1, easy_localization 3.0.7, retrofit 4.4.2 (pinned), dartz, json_annotation, supabase_flutter 2.12.2, formz, shared_preferences 2.5.3, get_it 8, faker, uuid, easy_logger, freezed_annotation 2.4.1, dio 5.8, custom_sliding_segmented_control, bloc_concurrency, pretty_dio_logger, dropdown_button2, flutter_quill 11.5, webview_flutter 4.13.1 (+ android 4.7, wkwebview 3.23), flutter_pdfview 1.4.4, path_provider, share_plus 12.0.1 (pinned), file_picker 9.2.3, pinput 5.0.2, smooth_page_indicator, package_info_plus 8.3, intl 0.20.2, flutter_advanced_switch, html_editor_enhanced 2.7.0 (→ flutter_inappwebview 6.1.5 — see risks), flutter_stripe 11.5.0, http, html, flutter_contacts 1.1.9+2, azlistview, url_launcher 6.3.2, permission_handler 11.4.0, table_calendar 3.2, flutter_google_places_hoc081098 2.0, google_api_headers 4.5.3, google_maps_flutter (android impl 2.18.3), flutter_libphonenumber 2.5.1, country_flags 3.3, firebase_messaging 16.2.0, firebase_core 4.7.0, firebase_analytics 12.3.0, rxdart, signature 6.3, app_settings 6.1.1, cached_network_image 3.4.1, carousel_slider 5.1.2, image_picker 1.2.1, image_cropper 11.0.0, image 4.5.4, path, app_links 6.4.1, tenjin_plugin 1.3.0 (pinned), flutter_install_referrer 2.1.1, flutter_image_compress 2.4.0, pdf 3.11.3, flutter_dotenv 5.2.1, flutter_carousel_widget 3.1.0. Dev: build_runner 2.4.15, flutter_gen_runner, json_serializable 6.9.5, mocktail, bloc_test 10, mock_supabase_http_client 0.0.3+2, freezed 2.4.7, retrofit_generator 9.2.0, flutter_lints 5. App B (direct deps, current) collection 1.19, connectivity_plus 6.1.1, dartz, dio 5.8, easy_localization 3.0.8, equatable, flutter_bloc 9.1.1, flutter_gen 5.12, flutter_screenutil 5.9.3, flutter_secure_storage 9.2.4, flutter_svg 2.2.1, formz, freezed 3.2.0, freezed_annotation 3.1.0, get_it 8.2, go_provider 1.8.2, go_router 16.0.0, intl 0.20.2, json_annotation, package_info_plus 8.3, device_info_plus 10.1.2, app_settings 5.1.1, pinput 5.0.2, pretty_dio_logger, retrofit 4.7.2, shared_preferences 2.5.3, url_launcher 6.3.2, uuid, path_provider 2.1.4, path, flutter_form_builder 10.1.0, form_builder_validators 11.0.0, signature 6.3.0, supabase_flutter 2.10.3, geolocator 10.1.0, geocoding 3.0.0, permission_handler 11.3.1, image_picker 1.2.0, camera 0.11.0, image_cropper 11.0.0, image 4.3.0, speech_to_text 7.3.0, http 1.5.0, flutter_contacts 1.1.9+2, azlistview 2.0, flutter_libphonenumber 2.5.1, faker, country_flags 4.1.0, google_sign_in 7.2.0, sign_in_with_apple 7.0.1, crypto 3.0.5, bloc_concurrency, dropdown_button2, share_plus 12.0.1, google_mlkit_text_recognition 0.15.0, file_picker 8.1.4, easy_logger, flutter_advanced_switch 3.1, in_app_purchase 3.2.3, in_app_purchase_android 0.4.0+5, in_app_purchase_storekit 0.4.4, custom_sliding_segmented_control, firebase_core 4.4.0, firebase_messaging 16.1.1, rxdart 0.28, flutter_background_geolocation 5.0.0, flutter_local_notifications 17.2.3, background_fetch 1.5.0, latlong2 0.9.1, flutter_speed_dial 7.0, flutter_map 8.2.2, adaptive_action_sheet 2.0.4, drift 2.27.0, drift_flutter 0.2.7, sqlite3_flutter_libs 0.5.0. Deliverables One PR per app (branch off the branch we designate), green CI, reviewable commit history. Upgrade notes: every breaking change encountered and how it was resolved; final version matrix. 16 KB alignment report (per .so, per app). QA evidence: filled regression checklist + screenshots/screen recordings of critical paths on API 36 (emulator + physical device). Release-ready AAB per app uploaded to internal testing (we grant Play Console access) — production rollout stays with us. What we provide Private repo access (after NDA/interview), test backend environment, debug signing, Play Console internal-testing access, Transistorsoft license key (App B), timely code review (same-day on weekdays). Out of scope New features; social sign-in for App A; tablet/adaptive layout polish; iOS store release work; CI redesign beyond the Flutter version alignment.
$3,000.00
Fixed-price- IntermediateExperience Level
- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:20 to 50
- Interviewing:0
- Invites sent:0
- Unanswered invites:0
About the client
- CZEPrague5:13 AM
- $240 total spent2 hires, 0 active
- Tech & ITSmall company (2-9 people)
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by