web-dev-qa-db-fra.com

Comment définir canOverrideExistingModule = true dans React Natif pour Android Apps??)

J'ai construit une application Android avec React Native, elle a été construite avec succès, mais lorsque je lance l'application dans mon Android Virtual Appareil, il affiche un plein écran rouge avec l'erreur suivante:

enter image description here

Je n'ai jamais réalisé de développement d'applications natives et je n'ai aucune connaissance de Java), donc je ne sais pas ce que cette erreur signifie et comment résoudre ce problème.

48
UtkarshPramodGupta

Le nom du paquet associé à cette erreur n'est pas AirMapModule mais MapsPackage à partir de com.airbnb.Android.react.maps.

Dans votre MainApplication.Java Dans le répertoire: Android/app/src/main/Java/../../, Supprimez toute entrée en double de:

  • le package d'importation: import com.airbnb.Android.react.maps.MapsPackage
  • l'appel au constructeur du module: new MapsPackage() dans fonction getPackages
98
efx

Accédez au fichier "MainApplication.Java" (sous.\Android\app\src\main\Java\com\nomProjet).

Assurez-vous que, dans la fonction getPackages (), vous n’avez pas de lignes en double (dans mon cas, j’ai eu "new MapsPackage ()" deux fois).

Corrigez également les importations en double.

Bonne chance

37
Barak Kakoun

Allez dans le fichier MainAplication.

Supprimer le package en double et supprimer le package en double dans la méthode getPackages()

  @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new VectorIconsPackage()
      );
    }

Ensuite, après avoir essayé cette commande dans votre terminal:

  • cd Android
  • ./ gradlew clean
13
HM Hamza Zubair
  @Override    
  public boolean canOverrideExistingModule() {        
    return true;    
  }   

Ajouter ce code à votre constructeur de module natif serait bien

8
Andrew Fan

Vous pouvez essayer d’archiver le fichier MainApplication.Java dans le répertoire: Android\app\src\main\Java il existe ou non un package dupliqué AirMapModule, et en supprime 1 le cas échéant.

3
Nguyên Hoàng

Si la version de RN que vous utilisez est> = 0.60, il est possible que la liaison automatique et votre liaison manuelle fassent la même chose deux fois. Vous avez deux options:

1- Vous pouvez annuler les modifications de code dans la méthode getPackages
2- Vous pouvez désactiver la liaison automatique dans react-native-config.js fichier.

1
Mahdi

vérifiez votre MainApplication.Java, en particulier protected List<ReactPackage> getPackages(); le AirMapModule est probablement deux fois dans la liste

0
caopeng