1. ホーム
  2. android

複数の dex ファイルが Lorg/apache/cordova/BuildHelper を定義する

2023-11-26 18:25:04

質問

昨日から困っています。インターンシップで以下のようなビルドエラーに遭遇したのですが、原因がわかりませんでした。

$ cordova build android

[...]

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/BuildHelper;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3.379 secs
Error: /home/thor/Projects/App_CDP/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/BuildHelper;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

以下は cordova plugins list このように、support-v4/v13 の衝突はありません。

$ cordova plugin list
com.googlemaps.ios 2.2.0-fixed "Google Maps SDK for iOS"
com.moust.cordova.videoplayer 1.0.1 "Video Player"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-file 4.0.0 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-googlemaps 1.4.0 "phonegap-googlemaps-plugin"
cordova-plugin-inappbrowser 1.7.1 "InAppBrowser"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.2 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"
{}

さらに詳しい情報はこちらです。

$ cordova -v
7.0.1

$ ionic -v
2.1.4

どのように解決するのですか?

ほとんどの場合、新しくリリースされた [email protected] を使用していると思います。 BuildHelper.java (エラーメッセージにあるように) と パーミッションヘルパー.java がありますが、まだ非推奨の コードバ・プラグイン・コンパット を使用しているため、ビルドに失敗しています。 には以下のクラスも含まれています。 .

これを修正するために cordova-plugin-compat からこれらの Java ファイルをアンインストールしてください。 cordova-android platform プロジェクトからアンインストールします。

cordova plugin rm cordova-plugin-compat --force

更新

この変更を永続化するために [email protected] を追加し、その中に エンジン制約 に再インストールされるのを防ぐため、Java ファイルを [email protected]+ プラットフォームに再インストールされるのを防ぐためです。

cordova plugin add [email protected]

別の更新 (コメントからのコピペ)

[email protected] を削除および追加した後、Android プラットフォーム全体を削除および追加するのではなく、フォルダ platforms/android から BuildHelper.java および PermissionHelper.java ファイルのみを削除することができます。