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

[Mobile App] 989: Update Flutter SDK and packages, Xcode, Android Gradle #991

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

KarinBerg
Copy link
Contributor

@KarinBerg KarinBerg commented Dec 20, 2024

  • Update to latest Flutter SDK
  • Use latest Xcode 16.2
  • Upgrade Android Gradle to be compatible to Android Studio LadyBug with Java JDK 21 instead of JDK17
  • Update Flutter Firebase packages => This leads to new minimum supported operating system versions.
    • New Android min version of 23 instead of 21
    • New iOS min version of iOS 13 instead of iOS 12
  • Update all other possible Flutter packages

Summary by CodeRabbit

Release Notes

  • New Features

    • None
  • Improvements

    • Updated Flutter to version 3.27.1
    • Updated iOS deployment target to version 13.0
    • Updated Android minimum SDK version to 23
    • Updated various dependencies to latest versions
    • Enhanced localization with new weekday format
    • Organized build artifact paths for better clarity
  • Bug Fixes

    • Improved error handling in several UI components
    • Added context mounting checks in asynchronous operations
  • Chores

    • Updated build configurations
    • Upgraded development tools and SDK versions
    • Removed deprecated code and annotations
    • Updated CI/CD configurations
  • Performance

    • Optimized build and deployment configurations

- Update Android minimum version from 21 to 23
- Update iOS minimum version from iOS 12 to iOS 13
Try rewriting the code to not use the 'BuildContext', or guard the use with a 'mounted' check.
Copy link

vercel bot commented Dec 20, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Skipped Deployment
Name Status Preview Comments Updated (UTC)
public ⬜️ Ignored (Inspect) Visit Preview Jan 19, 2025 9:19pm

Copy link

coderabbitai bot commented Dec 20, 2024

📝 Walkthrough

Walkthrough

This pull request encompasses a comprehensive update to the mobile application's development and build infrastructure. The changes primarily focus on upgrading tool versions, including Flutter (3.22.3 to 3.27.1), Xcode (15.4 to 16.2), Java (17 to 21), and various Android and iOS configurations. The modifications enhance compatibility with newer development environments, adjust minimum OS support versions, and update dependency packages across the project.

Changes

File/Path Change Summary
codemagic.yaml Updated environment versions and artifact paths for Android workflows
.tool-versions Updated Flutter to 3.27.1, added Ruby 3.2.2
README.md Updated tool installation instructions for Apple Silicon Macs
recipients_app/android/build.gradle Updated minimum SDK version to 23, added compile and Kotlin options
recipients_app/ios/Podfile Updated iOS platform version to 13.0 and FirebaseFirestore pod version to 11.4.0
pubspec.yaml Updated app version, SDK, Flutter, and multiple package versions
recipients_app/android/app/src/main/kotlin/org/socialincome/recipients_app/MainActivity.kt Removed the MainActivity class
AndroidManifest Files Removed package attribute across multiple manifests
recipients_app/test/helpers/flutter_test_config.dart Commented out CI environment check

Possibly related issues

Possibly related PRs

Suggested labels

mobile

Suggested reviewers

  • andrashee
  • novas1r1
  • mkue
  • MDikkii
  • ssandino

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9afd1b3 and 9ec7082.

📒 Files selected for processing (1)
  • recipients_app/lib/kri_intl.dart (2 hunks)
🔇 Additional comments (2)
recipients_app/lib/kri_intl.dart (2)

394-394: LGTM: Correct weekday format initialization.

The "EEE" format pattern is appropriate for abbreviated weekday names in the Krio locale.


414-415: LGTM: Required constructor parameter added correctly.

The weekdayFormat parameter is properly added and forwarded to the super constructor, as required by Flutter 3.27.1.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
applicationId "org.socialincome.app"
minSdkVersion 21
minSdkVersion 23
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minSdkVersion is because of Flutter Firebase packages update

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this file is a remaining from an older change where the app name was changed. In my opinion it is not needed anymore.

@@ -425,7 +425,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IPHONEOS_DEPLOYMENT_TARGET is because of Flutter Firebase packages update

@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '12.0'
platform :ios, '13.0'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because of Flutter Firebase packages update

@@ -30,7 +30,7 @@ flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.25.0'
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.4.0'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because of Flutter Firebase packages update

@@ -54,7 +54,7 @@
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>12.0</string>
<string>13.0</string>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because of Flutter Firebase packages update

@@ -1,7 +1,7 @@
import UIKit
import Flutter

@UIApplicationMain
@main
Copy link
Contributor Author

@KarinBerg KarinBerg Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is because of Flutter update to version 3.27.1

@@ -54,7 +54,7 @@ abstract class AppTheme {
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,
disabledBackgroundColor: AppColors.primaryColor.withOpacity(0.5),
disabledBackgroundColor: AppColors.primaryColor.withValues(alpha: 0.5),
Copy link
Contributor Author

@KarinBerg KarinBerg Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is because of Flutter update to version 3.27.1

@@ -45,7 +45,7 @@ class _InputDropdownState<T> extends State<InputDropdown<T>> {
contentPadding: AppSpacings.h12v16,
label: Text(widget.label),
labelStyle: AppStyles.inputHint.copyWith(
color: AppColors.darkGrey.withOpacity(0.6),
color: AppColors.darkGrey.withValues(alpha: 0.6),
Copy link
Contributor Author

@KarinBerg KarinBerg Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is because of Flutter update to version 3.27.1

@@ -62,7 +62,7 @@ class InputText extends StatelessWidget {
child: Text(
hintText!,
style: AppStyles.inputHint.copyWith(
color: AppColors.darkGrey.withOpacity(0.6),
color: AppColors.darkGrey.withValues(alpha: 0.6),
Copy link
Contributor Author

@KarinBerg KarinBerg Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is because of Flutter update to version 3.27.1

@@ -410,7 +411,8 @@ class KriCupertinoLocalizations extends GlobalCupertinoLocalizations {
required super.singleDigitHourFormat,
required super.singleDigitMinuteFormat,
required super.doubleDigitMinuteFormat,
required super.singleDigitSecondFormat,
required super.singleDigitSecondFormat,
required super.weekdayFormat,
Copy link
Contributor Author

@KarinBerg KarinBerg Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is because of Flutter update to version 3.27.1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we do not need this file anymore. Please verify that!

@@ -1,6 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.socialincome.app">
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

package='org.socialincome.app' is replace by the namespace 'org.socialincome.app' in build.gradle

@@ -1,6 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.socialincome.app">
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

package='org.socialincome.app' is replace by the namespace 'org.socialincome.app' in build.gradle

@@ -1,6 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.socialincome.app">
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

package='org.socialincome.app' is replace by the namespace 'org.socialincome.app' in build.gradle

android.useAndroidX=true
android.enableJetifier=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This stuff was changed by Android Studio while automatically upgrading the gradle version via the Android Studio assistant.

@@ -4,7 +4,7 @@ import "package:alchemist/alchemist.dart";
import "package:app/ui/configs/app_theme.dart";

Future<void> testExecutable(FutureOr<void> Function() testMain) async {
const isRunningInCi = bool.fromEnvironment("CI");
//const isRunningInCi = bool.fromEnvironment("CI");
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not used, so I commented it out

Copy link

github-actions bot commented Jan 11, 2025

Visit the preview URL for this PR (updated for commit f6f091a):

https://si-admin-staging--pr991-karin-chore-989-upda-ourblfx2.web.app

(expires Sun, 26 Jan 2025 14:54:16 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: b7b0969384059dce6ea8fad1ee1d1737e54e6676

cocoapods: 1.16.2
java: 17
java: 21
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With JDK21 we get those warning while building the APK:

warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings

According to this thread these warnings are harmless in our case.

Copy link
Contributor

@novas1r1 novas1r1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -391,6 +391,7 @@ class _KriCupertinoLocalizationsDelegate extends LocalizationsDelegate<Cupertino
singleDigitHourFormat: intl.DateFormat("d", localeName),
singleDigitMinuteFormat: intl.DateFormat("d", localeName),
singleDigitSecondFormat: intl.DateFormat("d", localeName),
weekdayFormat: intl.DateFormat("EEE", localeName), // TODO: Check if this is right!!!
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure about this code. Maybe someone could verify this :)

@KarinBerg KarinBerg marked this pull request as ready for review January 19, 2025 18:44
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
recipients_app/lib/view/pages/terms_and_conditions_page.dart (1)

64-71: Consider enhancing error handling and URL management.

Two suggestions for improvement:

  1. Move the URL to a constants file for better maintainability
  2. Add specific error handling for URL launch failures
+ // In constants.dart
+ class AppUrls {
+   static const privacyPolicy = "https://socialincome.org/privacy";
+ }

  // In this file
- const url = "https://socialincome.org/privacy";
+ const url = AppUrls.privacyPolicy;
recipients_app/README.md (2)

167-167: Fix grammar in CI/CD section.

Change "are define" to "are defined".

🧰 Tools
🪛 LanguageTool

[grammar] ~167-~167: Consider using either the past participle “defined” or the present participle “defining” here.
Context: ...flows to build and release the apps are define in the file codemagic.yaml. CodeMagic ...

(BEEN_PART_AGREEMENT)


170-172: Format documentation links.

Convert bare URLs to markdown links.

-CodeMagic documentation:
-https://docs.codemagic.io/yaml-quick-start/building-a-flutter-app/
-CodeMagic Cheetsheet:
-https://docs.codemagic.io/codemagic-yaml-cheatsheet.html
+CodeMagic documentation: [Building a Flutter App](https://docs.codemagic.io/yaml-quick-start/building-a-flutter-app/)
+CodeMagic Cheatsheet: [YAML Cheatsheet](https://docs.codemagic.io/codemagic-yaml-cheatsheet.html)
🧰 Tools
🪛 Markdownlint (0.37.0)

170-170: null
Bare URL used

(MD034, no-bare-urls)


172-172: null
Bare URL used

(MD034, no-bare-urls)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2d28b07 and f6f091a.

⛔ Files ignored due to path filters (2)
  • recipients_app/ios/Podfile.lock is excluded by !**/*.lock
  • recipients_app/pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (28)
  • codemagic.yaml (3 hunks)
  • recipients_app/.tool-versions (1 hunks)
  • recipients_app/README.md (3 hunks)
  • recipients_app/android/.gitignore (1 hunks)
  • recipients_app/android/app/build.gradle (2 hunks)
  • recipients_app/android/app/src/debug/AndroidManifest.xml (1 hunks)
  • recipients_app/android/app/src/dev/AndroidManifest.xml (1 hunks)
  • recipients_app/android/app/src/main/AndroidManifest.xml (1 hunks)
  • recipients_app/android/app/src/main/kotlin/org/socialincome/recipients_app/MainActivity.kt (0 hunks)
  • recipients_app/android/app/src/profile/AndroidManifest.xml (1 hunks)
  • recipients_app/android/app/src/stage/AndroidManifest.xml (1 hunks)
  • recipients_app/android/build.gradle (1 hunks)
  • recipients_app/android/gradle.properties (1 hunks)
  • recipients_app/android/gradle/wrapper/gradle-wrapper.properties (1 hunks)
  • recipients_app/android/settings.gradle (1 hunks)
  • recipients_app/ios/Podfile (2 hunks)
  • recipients_app/ios/Runner.xcodeproj/project.pbxproj (18 hunks)
  • recipients_app/ios/Runner/AppDelegate.swift (1 hunks)
  • recipients_app/ios/Runner/Info.plist (1 hunks)
  • recipients_app/ios/firebase_app_id_file.json (0 hunks)
  • recipients_app/lib/kri_intl.dart (2 hunks)
  • recipients_app/lib/ui/configs/app_theme.dart (1 hunks)
  • recipients_app/lib/ui/inputs/input_dropdown.dart (2 hunks)
  • recipients_app/lib/ui/inputs/input_text.dart (1 hunks)
  • recipients_app/lib/view/pages/account_page.dart (1 hunks)
  • recipients_app/lib/view/pages/terms_and_conditions_page.dart (1 hunks)
  • recipients_app/pubspec.yaml (1 hunks)
  • recipients_app/test/helpers/flutter_test_config.dart (1 hunks)
💤 Files with no reviewable changes (2)
  • recipients_app/android/app/src/main/kotlin/org/socialincome/recipients_app/MainActivity.kt
  • recipients_app/ios/firebase_app_id_file.json
✅ Files skipped from review due to trivial changes (5)
  • recipients_app/lib/ui/inputs/input_dropdown.dart
  • recipients_app/test/helpers/flutter_test_config.dart
  • recipients_app/lib/ui/inputs/input_text.dart
  • recipients_app/.tool-versions
  • recipients_app/android/build.gradle
🧰 Additional context used
🪛 LanguageTool
recipients_app/README.md

[duplication] ~31-~31: Possible typo: you repeated a word.
Context: ...udio by default - Install Java 21 via Homebrew brew install openjdk@21 - Homebrew is telling you to execute a symlink com...

(ENGLISH_WORD_REPEAT_RULE)


[uncategorized] ~34-~34: A comma may be missing after the conjunctive/linking adverb ‘Additionally’.
Context: ...an find this JDK. Please do this. - Additionally in your USER's HOME directory in the fi...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[uncategorized] ~159-~159: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’.
Context: ...x.y.z with the new Flutter version. - Otherwise just update the version number in the f...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[grammar] ~167-~167: Consider using either the past participle “defined” or the present participle “defining” here.
Context: ...flows to build and release the apps are define in the file codemagic.yaml. CodeMagic ...

(BEEN_PART_AGREEMENT)

🪛 Markdownlint (0.37.0)
recipients_app/README.md

170-170: null
Bare URL used

(MD034, no-bare-urls)


172-172: null
Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (24)
recipients_app/lib/view/pages/terms_and_conditions_page.dart (1)

64-71: Correct implementation of BuildContext safety check.

The addition of context.mounted check properly addresses the async gap safety concern, following Flutter best practices.

recipients_app/lib/ui/configs/app_theme.dart (1)

57-57: Confirm color opacity behavior in Flutter 3.27.1.

The switch from withOpacity to withValues is aligned with Flutter 3.27.1 changes. However, verify that the disabled button appearance remains consistent across the app.

✅ Verification successful

Color opacity implementation is correct and consistent

All color opacity modifications in the codebase use the new withValues(alpha:) pattern, confirming proper adaptation to Flutter 3.27.1.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining withOpacity calls that might need similar updates
rg "withOpacity" --type dart

Length of output: 28


Script:

#!/bin/bash
# Search for color-related alpha or opacity modifications
rg -i "with(Values|Alpha|Opacity)" --type dart

# Search for Color class usage patterns
ast-grep --pattern 'Color.$$$'

# Look for specific imports that might indicate color usage
rg "import.*material.dart|import.*colors.dart" --type dart

Length of output: 6747

recipients_app/lib/view/pages/account_page.dart (1)

239-249: Good addition of the mounted check!

The context.mounted check prevents potential crashes from updating state after the widget is disposed during the async date picker operation.

recipients_app/android/app/src/stage/AndroidManifest.xml (1)

1-2: Package attribute removal is correct.

The package identifier has been moved to the namespace in build.gradle, following modern Android Gradle Plugin conventions.

recipients_app/android/.gitignore (1)

12-13: Good security practice!

Adding explicit patterns for both .keystore and .jks files ensures better protection against accidentally committing sensitive keystore files.

recipients_app/android/gradle.properties (1)

1-6: Appropriate memory and build configuration updates.

The changes include:

  • Increased JVM memory (4GB) and metaspace (2GB) for better build performance
  • Required build feature flags for compatibility with the new Android Gradle Plugin
recipients_app/android/gradle/wrapper/gradle-wrapper.properties (1)

3-5: Gradle upgrade and configuration changes look good.

The upgrade to Gradle 8.9 aligns with the Flutter and Java updates. Network timeout and URL validation are good security practices.

Run this script to verify Gradle compatibility:

✅ Verification successful

Gradle 8.9 is compatible with project's Android SDK configuration

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if build.gradle files are compatible with Gradle 8.9
rg -l "com.android.tools.build:gradle" | xargs rg "compileSdkVersion|minSdkVersion|targetSdkVersion"

Length of output: 298

recipients_app/android/app/src/dev/AndroidManifest.xml (1)

1-2: Package attribute removal is correct.

Package is now defined as namespace in build.gradle, following Android Gradle Plugin 8.x conventions.

recipients_app/android/app/src/profile/AndroidManifest.xml (1)

1-5: Manifest changes and documentation updates look good.

Package removal and improved documentation for INTERNET permission requirements are appropriate.

recipients_app/android/app/src/debug/AndroidManifest.xml (1)

1-5: Changes match profile manifest.

recipients_app/android/settings.gradle (1)

21-23: Plugin versions are appropriate for the Flutter SDK update.

The Android Gradle Plugin 8.7.3 and Kotlin 1.8.22 versions are compatible with Flutter 3.27.1.

Run this script to verify version compatibility:

✅ Verification successful

✓ Plugin versions verified and compatible

All plugin versions and SDK configurations are correctly set up for Flutter 3.27.1:

  • Android Gradle Plugin 8.7.3
  • Kotlin 1.8.22
  • Gradle 8.9
  • Android SDK levels (compile: 34, target: 34, min: 23)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check Flutter version and plugin compatibility
rg "flutter.sdk" . -A 2
rg "compileSdkVersion|buildToolsVersion|kotlinVersion" .

Length of output: 499


Script:

#!/bin/bash
# Check Flutter SDK version and additional Gradle configurations
cat recipients_app/pubspec.yaml | grep -A 2 "environment:"
rg "minSdkVersion|targetSdkVersion|kotlin.version|gradle" recipients_app/android/

Length of output: 851

recipients_app/pubspec.yaml (1)

14-20: Verify Firebase package compatibility.

The Firebase packages have been updated to major version 5.x. This is a significant update that requires minimum iOS 13 and Android API 23, which aligns with the PR objectives.

✅ Verification successful

Firebase packages are compatible but require Flutter ≥3.16.0

All Firebase packages are using compatible versions and have consistent SDK requirements. The firebase_auth package sets the minimum Flutter version requirement to 3.16.0 for the entire app.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for breaking changes in Firebase packages

# Check release notes for breaking changes
gh api graphql -f query='
{
  repository(owner: "firebase", name: "flutterfire") {
    releases(first: 5, orderBy: {field: CREATED_AT, direction: DESC}) {
      nodes {
        name
        description
      }
    }
  }
}'

Length of output: 746


Script:

#!/bin/bash
# Check pubspec.lock for resolved versions and pub.dev for package metadata
if [ -f "recipients_app/pubspec.lock" ]; then
    echo "=== Resolved Firebase Package Versions ==="
    grep -A 1 "firebase\|firestore" recipients_app/pubspec.lock

    echo -e "\n=== Checking pub.dev metadata ==="
    for pkg in "cloud_firestore" "firebase_auth" "firebase_core" "firebase_messaging" "firebase_app_check"; do
        curl -s "https://pub.dev/api/packages/$pkg" | jq -r '. | "Package: \(.name)\nLatest: \(.latest.version)\nSDK: \(.latest.pubspec.environment.sdk)\nFlutter: \(.latest.pubspec.environment.flutter)\n"'
    done
fi

Length of output: 4895

recipients_app/android/app/src/main/AndroidManifest.xml (1)

1-1: LGTM! Package declaration moved to build.gradle.

The removal of the package attribute from AndroidManifest.xml is correct as it's now declared as a namespace in build.gradle.

recipients_app/android/app/build.gradle (3)

35-35: LGTM! Namespace declaration added.

The namespace declaration replaces the package attribute from AndroidManifest.xml.


38-45: Note: Java compatibility settings are required.

These settings ensure compatibility with Android's build tools despite using JDK 21. The warnings about obsolete Java 1.8 options are known and harmless as noted in the past review comments.


53-53: LGTM! minSdkVersion updated to 23.

This change is required by the Firebase package updates.

codemagic.yaml (2)

7-10: LGTM! Environment versions updated.

The updates to Flutter (3.27.1), Xcode (16.2), and Java (21) align with the PR objectives.


91-92: LGTM! Artifact paths updated.

The artifact paths are now more specific to their respective flavors (stage/prod).

Also applies to: 183-184

recipients_app/lib/kri_intl.dart (2)

394-394: Verify the weekday format pattern.

The format pattern "EEE" is correct for abbreviated weekday names in Flutter's DateFormat. It will display weekdays as "Mon", "Tue", etc.


414-415: LGTM! Constructor parameter matches the Flutter 3.27.1 requirements.

The addition of the required weekdayFormat parameter aligns with the changes in Flutter SDK 3.27.1.

recipients_app/ios/Runner/AppDelegate.swift (1)

4-4: LGTM! Standard Swift modernization

The change from @UIApplicationMain to @main follows modern Swift conventions.

recipients_app/ios/Podfile (2)

2-2: Minimum iOS version update confirmed

The platform update to iOS 13.0 aligns with the PR objectives.


33-33: Verify Firebase compatibility

The FirebaseFirestore update to 11.4.0 should be verified against the Flutter Firebase plugin version.

recipients_app/ios/Runner/Info.plist (1)

57-57: LGTM! Consistent minimum iOS version

The MinimumOSVersion update to 13.0 is consistent with the Podfile configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Mobile App maintenance] Update Flutter SDK and packages (especially Firebase packages), Xcode, Android Gradle
2 participants