2
votes

Flutter: Cloud_firestore cassera votre build Android si elle ou ses dépendances ne sont pas compatibles avec AndroidX

Je ne peux pas utiliser ces deux plugins de flutter ensemble:

D8: Program type already present: android.arch.core.util.Function
     *********************************************************
WARNING: This version of cloud_firestore will break your Android build if it or its dependencies aren't compatible with AndroidX.
         See https: //goo.gl /CP92wY for more information on the problem and how to fix it.
         This warning prints for all Android build failures. The real root cause of the error may be unrelated.
         *********************************************************

FAILURE: Build failed with an exception.

Lors de l'exécution, une erreur s'est produite:

  cloud_firestore: ^0.9.0+2
  barcode_scan: ^0.0.8

il a été compilé et exécuté sur Téléphone Android lorsque je supprime l'un d'entre eux. Mais les deux ne peuvent pas aller ensemble. Comment réparer?


0 commentaires

3 Réponses :


1
votes

Signalez un problème avec barcode_scan pour le mettre à jour pour AndroidX.

Limitez le plugin à une version qui ne dépend pas d'AndroidX jusqu'à ce qu'une nouvelle version de barcode_scan devienne disponible:

cloud_firestore: ^0.8.2

Ou mettez à jour barcode_scan manuellement comme mentionné dans https://github.com/flutter/flutter/issues/28207#issuecomment- 465600796


0 commentaires

2
votes

Trouvé la solution (pour moi, du moins)!

J'ai eu le problème suivant:

[+1498 ms] > Task :app:crashlyticsUploadDeobsRelease
[        ] > Task :cloud_firestore:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_analytics:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_auth:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_core:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_crashlytics:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_dynamic_links:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_messaging:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_ml_vision:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :firebase_remote_config:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :flutter_local_notifications:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :google_sign_in:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :image_picker:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :share:prepareLintJarForPublish UP-TO-DATE
[        ] > Task :shared_preferences:prepareLintJarForPublish UP-TO-DATE
[+15399 ms] > Task :app:lintVitalRelease FAILED
[        ]          *********************************************************
[        ] WARNING: This version of cloud_firestore will break your Android build if it or its dependencies aren't compatible with AndroidX.
[        ]          
[        ]          This warning prints for all Android build failures. The real root cause of the error may be unrelated.
[        ]          *********************************************************
[        ] 317 actionable tasks: 273 executed, 44 up-to-date
[ +372 ms] Running Gradle task 'assembleRelease'... (completed in 75.7s)
[        ] *******************************************************************************************
[        ] The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.
[        ] 

Il semble que runner version 1.2.1 était le responsable de cette !

Après être passé à la version 1.2.0 , cela a fonctionné.

Donc, j'ai changé la ligne suivante de android/app/build.gradle

androidTestImplementation 'androidx.test: runner: 1.2.1 '

à

androidTestImplementation' androidx.test: runner: 1.2.0 '

(Remarque: également , n'oubliez pas d'ajouter dans Firebase Console toutes les empreintes de certificat SHA que vous allez utiliser dans vos applications.)


0 commentaires

1
votes

En bref

Ajouter une bibliothèque multidex à la dépendance de l'application Android (/android/app/build.gradle)

android.useAndroidX=true
android.enableJetifier=true

sous le répertoire Android Fichier gradel.properties

Ajouter

...
android {
  ...
  defaultConfig {
    ...
    multiDexEnabled true
  }
  ...
}
...
dependencies {
  implementation 'com.android.support:multidex:1.0.3' // use latest version
  ...
}
...


0 commentaires