70 votes

Comment définir canOverrideExistingModule=true dans React Native pour les applications Android ?

J'ai construit une application Android en utilisant React Native, elle a été construite avec succès mais lorsque je lance l'application dans mon appareil virtuel Android, elle affiche un écran rouge complet avec l'erreur suivante :

enter image description here

Je n'ai jamais développé d'applications natives auparavant et je n'ai aucune connaissance de Java. Je n'ai donc aucune idée de la signification de cette erreur et de la façon de la corriger.

110voto

efx Points 43

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

Dans votre MainApplication.java dans le répertoire : android/app/src/main/java/../../ supprimer toute entrée en double de :

  • le paquet d'importation : import com.airbnb.android.react.maps.MapsPackage
  • l'appel au constructeur du module : new MapsPackage() en fonction getPackages

7 votes

Le premier point est mentionné partout en ligne, mais c'était la première fois que l'on mentionnait le deuxième endroit où chercher les doublons. Merci.

2 votes

Cette erreur se produit lorsque vous essayez d'importer deux fois le même paquet dans le fichier MainApplication.java.

1 votes

Cela fonctionne mais à chaque fois que je lie une bibliothèque, cela se répète.

42voto

Barak Kakoun Points 348

Allez dans le fichier "MainApplication.java" (sous le nom de "MainApplication"). .\android\app\src\main\java\com\projectName\ )

Assurez-vous que sous getPackages() vous n'avez pas de lignes en double (dans mon cas, j'avais "new MapsPackage()" deux fois).

Corriger également les importations en double.

21voto

Andrew Fan Points 88

Ouvrez le MainApplication.java par cette adresse : android/app/src/main/java/com/projectName/MainApplication.java et ajoutez le code suivant à MainApplication.java fichier :

@Override    
public boolean canOverrideExistingModule() {        
  return true;    
}   

Et tout est devenu correct.

10 votes

Qu'entendez-vous exactement par module natif ? bibliothèque ? J'obtiens une erreur "module does not override method from it's superclass".

6 votes

Quelqu'un peut-il être plus précis sur cette solution ? Veuillez nous dire ce que et où ...

3 votes

Merci à @Andew Fan d'avoir répondu à la question.

15voto

HM Hamza Zubair Points 161

Allez à la Fichier MainAplication .

Suppression du paquet en double et suppression du paquet en double en getPackages() méthode

  @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

2voto

Nguyên Hoàng Points 505

Vous pouvez essayer de vérifier dans le fichier MainApplication.java dans le répertoire : android\app\src\main\java est si un paquet AirMapModule en double existe ou non, et supprime 1 si c'est le cas.

0 votes

Il n'y a ni paquet ni même une variable du nom de AirMapModule dans le fichier MailApplication.java :(

0 votes

Quelle version de react-native utilisez-vous ?

0 votes

React-native-cli : 2.0.1 react-native : 0.36.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X