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

Slow app startup caused by Amplify V1 DataStore in Android #5450

Open
2 of 14 tasks
joshuamoreno1 opened this issue Sep 13, 2024 · 2 comments
Open
2 of 14 tasks

Slow app startup caused by Amplify V1 DataStore in Android #5450

joshuamoreno1 opened this issue Sep 13, 2024 · 2 comments
Labels
datastore Issues related to the DataStore Category question A question about the Amplify Flutter libraries

Comments

@joshuamoreno1
Copy link

joshuamoreno1 commented Sep 13, 2024

Description

I’m experiencing issues with my Flutter app on Android devices when using AWS Amplify DataStore. The app works perfectly on iOS devices, but it takes a long time to start on physical Android devices. During debugging, I found that it gets stuck at this line:

await Amplify.configure(amplifyconfig);

After 1 to 2 minutes, the app finally starts, but I also notice it slows down when DataStore synchronization begins. The operating system shows an alert indicating that the app is not responding, but if you wait, it eventually continues to function correctly.

The only thing that i see in logs related to DataStore is this:

I/amplify:flutter:datastore( 8563): Added Auth plugin
I/amplify:flutter:datastore( 8563): Added API plugin
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:flutter:datastore( 8563): Unhandled DataStoreHubEvent: SUCCEEDED
I/amplify:flutter:datastore( 8563): com.amplifyframework.core.category.CategoryInitializationResult@21cbb22
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator transitioning from STOPPED to SYNC_VIA_API
I/amplify:aws-datastore( 8563): Starting to observe local storage changes.
I/amplify:aws-datastore( 8563): Now observing local storage. Local changes will be enqueued to mutation outbox.
I/amplify:aws-datastore( 8563): Setting currentState to LOCAL_ONLY
I/amplify:aws-datastore( 8563): Setting currentState to SYNC_VIA_API
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:aws-datastore( 8563): Starting API synchronization mode.
I/amplify:flutter:datastore( 8563): Successfully started datastore remote synchronization
I/amplify:aws-datastore( 8563): Starting processing subscription events.
I/ck.person.alph( 8563): Background concurrent copying GC freed 42176(3916KB) AllocSpace objects, 10(328KB) LOS objects, 49% free, 8996KB/17MB, paused 84us total 110.298ms
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:flutter:datastore( 8563): Successfully started datastore remote synchronization
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:flutter:datastore( 8563): Established a new stream form flutter com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter$$ExternalSyntheticLambda10@60f6b88
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/GED     ( 8563): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 31, oppidx_max 31, oppidx_min 0
I/GED     ( 8563): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 31, oppidx_max 31, oppidx_min 0
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/GED     ( 8563): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 31, oppidx_max 31, oppidx_min 0
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/GED     ( 8563): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 31, oppidx_max 31, oppidx_min 0
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=1 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 2.169s
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/GED     ( 8563): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 31, oppidx_max 31, oppidx_min 0
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=2 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 2.858s
I/GED     ( 8563): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 31, oppidx_max 31, oppidx_min 0
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
I/amplify:aws-datastore( 8563): DataStore plugin initialized.
I/amplify:aws-datastore( 8563): Orchestrator lock released.
I/amplify:aws-datastore( 8563): Orchestrator lock acquired.
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=4 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 4.767s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=5 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 4.969s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=6 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 5.172s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=7 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 5.395s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=8 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 5.592s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=9 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 5.713s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=10 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 5.936s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=11 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 6.233s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=12 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 6.386s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=13 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 6.655s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=14 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 6.869s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=15 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 7.067s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=16 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 7.687s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=17 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 7.886s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=18 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 8.177s
W/ck.person.alph( 8563): Long monitor contention with owner pool-20-thread-1 (8953) at void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action)(SubscriptionEndpoint.java:140) waiters=19 in void com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(com.amplifyframework.api.graphql.GraphQLRequest, com.amplifyframework.api.aws.AuthorizationType, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Consumer, com.amplifyframework.core.Action) for 8.388s
I/amplify:aws-datastore( 8563): Started subscription processor for models: [ProfileStats, GroupMessageReference, GroupMessage, ProfileRelationship, PopPops, P2PMessage, Profile] of types [ON_CREATE, ON_UPDATE, ON_DELETE].
I/flutter ( 8563): ----subscriptionsEstablished----
I/flutter ( 8563): ----syncQueriesStarted----
I/flutter ( 8563): [PopPops, GroupMessageReference, ProfileRelationship, P2PMessage, Profile, ProfileStats, GroupMessage]
I/amplify:aws-datastore( 8563): Successfully sync'd down model state from cloud.

However, this issue does not occur on iOS devices. I also checked the AppSync API logs in CloudWatch, and all synchronization queries and other requests are executed successfully without any errors. It’s possible that on Android, the operations are executed sequentially, whereas on iOS, they are executed in parallel.

This is my flutter doctor info:

[✓] Flutter (Channel stable, 3.19.4, on macOS 14.2 23C64 darwin-arm64, locale en-CO)
    • Flutter version 3.19.4 on channel stable at /Users/invitado/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 68bfaea224 (6 months ago), 2024-03-20 15:36:31 -0700
    • Engine revision a5c24f538d
    • Dart version 3.3.2
    • DevTools version 2.31.1

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/invitado/Library/Android/sdk
    • Platform android-34, build-tools 32.1.0-rc1
    • ANDROID_HOME = /Users/invitado/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15F31d
    • CocoaPods version 1.15.2

[✓] Android Studio (version 2021.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)

[✓] VS Code (version 1.93.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.94.0

[✓] Network resources
    • All expected network resources are available.

• No issues found!

And gradle files:

  • android/app/build.gradle:
android {
    namespace "com.nock.person"
    compileSdkVersion 34
    ndkVersion flutter.ndkVersion

    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    defaultConfig {
         minSdkVersion 24
        targetSdkVersion 34
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
       release {
            minifyEnabled true
            shrinkResources false
            signingConfig signingConfigs.release
       }
    }

....

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
    implementation 'com.google.android.gms:play-services-nearby:18.7.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

  • android/gradle/wrapper/gradle-wrapper.properties:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip

  • android/build.gradle:

...
buildscript {
    ext.kotlin_version = '1.8.21'
    repositories {
        google()
        mavenCentral()
    }

   dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2'
        classpath 'com.google.gms:google-services:4.3.15'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
...

I truly appreciate your help with this issue, as it is currently blocking the release of my app on the Google Play Store. I’ve only been able to launch the app on iOS so far due to this performance problem on Android. Your support means a lot to me, and I’m looking forward to any insights you can provide to resolve this.

Categories

  • Analytics
  • API (REST)
  • API (GraphQL)
  • Auth
  • Authenticator
  • DataStore
  • Notifications (Push)
  • Storage

Steps to Reproduce

  1. Build the Android APK:

    • Develop a Flutter app using AWS Amplify DataStore.
    • Use the provided schema to define the data models in DataStore.
    • Set up user authentication and ensure that the app can log in users.
    • Build the APK for Android using Flutter tools.
    • Deploy the APK on a regular Android device, such as a Xiaomi smartphone.
  2. Start the App with a Logged-In User:

    • Ensure a user is already logged in before starting the app.
    • When the app launches, it should begin loading data from DataStore models. Ensure that the data size is not too large (e.g., no more than 10 records per user).
  3. Observe the App Behavior:

    • Notice that the app takes a significant amount of time to start (1-2 minutes).
    • Check logs to see the errors.
    • During the startup, observe that the app seems to be stuck at the await Amplify.configure(amplifyconfig); line.
    • Additionally, when DataStore synchronization begins, the app becomes slow, and the Android operating system may display a "App not responding" alert.
    • If you wait, the app eventually resumes and functions correctly.

Screenshots

No response

Platforms

  • iOS
  • Android
  • Web
  • macOS
  • Windows
  • Linux

Flutter Version

3.19.4

Amplify Flutter Version

1.7.0

Deployment Method

Amplify CLI (Gen 1)

Schema

# all models in this schema. Learn more about authorization rules here: https://docs.amplify.aws/cli/graphql/authorization-rules
type Profile
  @model
  @auth(
    rules: [
      { allow: private, operations: [read, update], provider: iam }
      {
        allow: owner
        ownerField: "id"
        operations: [create, read, update, delete]
      }
    ]
  ) {
  id: ID!
  name: String!
  status: ProfileStatus!
  description: String
  city: String
  locale: String
  type: ProfileType
  imageId: String
}
enum ProfileStatus {
  active
  inactive
  blocked
}

enum ProfileType {
  person
  business
}

type ProfileRelationship
  @model
  @auth(
    rules: [
      { allow: private, operations: [create, read, update], provider: iam }
      { allow: owner, ownerField: "id", operations: [read, update, delete] }
    ]
  ) {
  id: ID! @primaryKey(sortKeyFields: ["popId"])
  popId: ID! @index(sortKeyFields: ["id"])
  status: ProfileRelationshipStatus!
  invisible: Boolean
}

enum ProfileRelationshipStatus {
  unpop
  pop
  pending
  popPop
  blocked
}

type ProfileStats
  @model
  @auth(
    rules: [
      { allow: private, operations: [read, update], provider: iam }
      { allow: owner, ownerField: "id", operations: [create, read] }
    ]
  ) {
  id: ID! @primaryKey(sortKeyFields: ["statsType"])
  statsType: ProfileStatsType!
  pops: Int
  popPops: Int
}

enum ProfileStatsType {
  relationships
}

type PopPops
  @model
  @auth(rules: [{ allow: owner, ownerField: "id", operations: [read] }]) {
  id: ID! @primaryKey(sortKeyFields: ["popId"])
  popId: ID! @index(sortKeyFields: ["id"])
}

type P2PMessage
  @model
  @auth(
    rules: [
      { allow: owner, ownerField: "id", operations: [read, update, delete] }
      { allow: private, operations: [create] }
    ]
  ) {
  id: ID! @primaryKey(sortKeyFields: ["uuid"]) @index(sortKeyFields: ["popId"])
  uuid: ID!
  popId: ID!
  status: P2PMessageStatus!
  type: MessageType!
  url: String
  message: String
  popPop: Boolean
  expirationUnixTime: AWSTimestamp! @ttl
  sentAt: Float!
}

enum P2PMessageStatus {
  unread
  read
  deleted
}

type GroupMessageReference
  @model
  @auth(
    rules: [
      { allow: owner, ownerField: "id", operations: [read, update, delete] }
      { allow: private, operations: [create] }
    ]
  ) {
  id: ID! @primaryKey(sortKeyFields: ["uuid"]) @index(sortKeyFields: ["popId"])
  uuid: ID!
  popId: ID!
  status: GroupMessageStatus!
  expirationUnixTime: AWSTimestamp! @ttl
  sentAt: Float!
}

enum GroupMessageStatus {
  unread
  read
  deleted
}

type GroupMessage
  @model
  @auth(
    rules: [
      {
        allow: owner
        ownerField: "id"
        operations: [create, read, update, delete]
      }
      { allow: private, operations: [read] }
    ]
  ) {
  id: ID! @primaryKey(sortKeyFields: ["uuid"])
  uuid: ID!
  type: MessageType!
  url: String
  message: String
  expirationUnixTime: AWSTimestamp! @ttl
  sentAt: Float!
}

enum MessageType {
  message
  image
  voice
  video
  file
  audio
}
@github-actions github-actions bot added pending-triage This issue is in the backlog of issues to triage pending-maintainer-response Pending response from a maintainer of this repository labels Sep 13, 2024
@tyllark
Copy link
Member

tyllark commented Sep 13, 2024

Hi @joshuamoreno1, thank you for submitting this issue. We will take a look at this issue and get back to you when we have any updates or questions.

@github-actions github-actions bot removed the pending-maintainer-response Pending response from a maintainer of this repository label Sep 13, 2024
@Equartey
Copy link
Member

Hi @joshuamoreno1, can you try to update to Amplify DataStore v1.8.0?

This version updated the Amplify Android package being consumed, which contained several improvements.

Please let us know if that resolved your issue.

@Equartey Equartey added question A question about the Amplify Flutter libraries datastore Issues related to the DataStore Category labels Sep 16, 2024
@github-actions github-actions bot removed the pending-triage This issue is in the backlog of issues to triage label Sep 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
datastore Issues related to the DataStore Category question A question about the Amplify Flutter libraries
Projects
None yet
Development

No branches or pull requests

3 participants