web-dev-qa-db-ja.com

React Native for Android AppsでcanOverrideExistingModule = trueを設定する方法は?

Android Nativeを使用してReactアプリをビルドしましたが、正常にビルドされましたが、Android仮想デバイスでアプリを実行すると、次のエラー:

enter image description here

ネイティブアプリの開発はこれまでに行ったことがなく、Javaの知識もないので、このエラーの意味と修正方法がわかりません。

48

このエラーに関連付けられているパッケージの名前は、AirMapModuleではなく、com.airbnb.Android.react.mapsからのMapsPackageです。

ディレクトリ内のMainApplication.JavaAndroid/app/src/main/Java/../../で、次の重複エントリを削除します。

  • インポートパッケージ:import com.airbnb.Android.react.maps.MapsPackage
  • モジュールのコンストラクターの呼び出し:new MapsPackage() in function getPackages
98
efx

ファイル「MainApplication.Java」に移動します(。\ Android\app\src\main\Java\com\projectNameの下)

GetPackages()関数の下に重複行がないことを確認してください(私の場合、「new MapsPackage()」が2回ありました)。

重複したインポートも修正します。

幸運を

37
Barak Kakoun

MainAplicationファイルに移動します。

getPackages()メソッドで重複パッケージを削除し、重複パッケージを削除します

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

次に、ターミナルでこのコマンドを試してください:

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

これらのコードをネイティブモジュールコンストラクターに追加しても問題ありません

8
Andrew Fan

MainApplication.Javaディレクトリ内のファイルAndroid\app\src\main\Javaをチェックインしてみてください。

3
Nguyên Hoàng

使用しているRNのバージョンが0.60以上の場合、自動リンクと手動リンクが同じことを2回行っている可能性があります。次の2つのオプションがあります。

1- getPackagesメソッドでコードの変更を元に戻すことができます
2- react-native-config.jsファイルで自動リンクを無効にできます。

1
Mahdi

MainApplication.Java、特にprotected List<ReactPackage> getPackages()を確認してください。 AirMapModuleはおそらくリストの2回です

0
caopeng