web-dev-qa-db-ja.com

複数のdexファイルがLorg / Apache / cordova / BuildHelperを定義しています

昨日から困っています。インターンシップでは、次のようなビルドエラーに直面しましたが、その理由がわかりませんでした。

$ 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
64
Biboozz

たぶんあなたは新しくリリースされた[email protected]を使っているでしょう - それは今やあなたのエラーメッセージに記されているように BuildHelper.JavaPermissionHelper.Java を含みます、しかしあなたはまだ非推奨を持っています - cordova-plugin-compat あなたのプロジェクトではビルドが失敗する原因となっています---これは これらのクラスも含む

これを修正するには、プロジェクトからcordova-plugin-compatを削除して、これらのJavaファイルをcordova-Androidプラットフォームプロジェクトからアンインストールします。

cordova plugin rm cordova-plugin-compat --force

更新

この変更を持続させるには、 engine constraint を含む[email protected]を追加して、Javaファイルが[email protected]+プラットフォームに再インストールされないようにします。

cordova plugin add [email protected]

もう一つの更新(コメントからコピーされたもの)

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

148
DaveAlden

解決策のどれも私のために働かないので私の2セントを追加しようとしています。私のために働いた唯一のもの:

cordova plugin rm cordova-plugin-compat --force
cordova platform rm Android
cordova platform add [email protected]
41
Eric

私がしなければなりませんでした:

cordova plugin rm cordova-plugin-compat --force
cordova plugin add [email protected]
cordova platform rm Android
cordova platform add [email protected]

cordova-plugin-fileのようなプラグインがそれに依存しているので、あなたが単純にcordova-plugin-compatを削除することはできないと考えてください。

19
jlchereau

1つの解決策:cordova Android platform @6.2.3をダウングレードする

$ cordova platform remove Android && cordova platform add [email protected]

9
Made in Moon

質問に対する回答はすでにわかっていますが、正式なリリースノートへのリンクを追加したいと思います。

https://cordova.Apache.org/news/2017/11/10/plugins-release.html

前回のプラグインリリースでは、cordova-plugin-compatがcordova-Android @ 6.3.0に統合されたため、非推奨となりました。そのため、このリリースサイクルでは、それに依存していたプラグインから依存関係を削除し、プラグインにメジャーバージョンジャンプを与えました。以下のプラグインはcordova-plugin-compatを削除しました:cordova-plugin-camera、cordova-plugin-contacts、cordova-plugin-file、cordova-plugin-geolocation、cordova-plugin-media、とcordova-plugin-media-capture

ですから、必ずすべてのリストされているプラ​​グインをリリースノートに掲載されているバージョンに更新してください。

9
Alexander S.

私のIonic 3プロジェクトでは、実行するのに十分でした:

ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]

そしてもう一度ビルドを実行します。プラットフォームを削除して追加する必要はありません。

4
Dark Smile

私はIonic 3プロジェクトに使っています、私はしなければなりません:

ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]
ionic cordova platform rm Android
ionic cordova platform add [email protected]

それは私のために働きます。

3
MD.Riyaz

私は同じエラーがありました、そして私は私のプラグインにcompatプラグインを持っていませんでした

$ cordova platform remove Android && cordova platform add [email protected]
2
Maryam

これが解決策です。

cordova plugin rm cordova-plugin-compat --force
1
Talha Baktır

cordovaプラグインrm cordova-plugin-compat --force

コルドバプラットフォームRMアンドロイド

コルドバプラットフォームは[email protected]を追加

cordovaプラグインは[email protected]を追加します

この順番で、私のために働きます!どうもありがとう

1

私はIonic 4を使用しています、そしてこれは私のためにそれを解決しました(実行するのに数秒かかるだけです):

cordova clean
0
Baub

他のプラグインの依存関係を更新した後、Compatプラグインを削除しました。 Cameraを新バージョンにするとうまくいく。例:cordova plugin rm cordova-plugin-camera - 保存cordovaプラグインcordova-plugin-camera @ latest --saveを追加します。新しいプラグインを追加すると、古いバージョン2.3.0がCameraプラグイン用の4.0.2に置き換えられました。

このステップの後私は単にプラグイン "Compat" cordova plugin rm cordova-plugin-compat --forceを削除しました

0

私はDaveAlden Worksによるその回答を確認します。

しかしcordova-plugin-compatの中のplugin.xmlでは、記号 '<'より少ない構文エラーがありました。これはxmlでは違法だからです。

この問題はVisual Studioで発生します。プラグインリソースのxmlでこの構文エラーを検出するため、設定マネージャでプラグインをインストールすることはできません。

DaveAldenが言うようにあなたはコマンドラインでインストールしなければなりません。

エラーを無視し、そしてインストール後に交換してください:

<engine name="cordova-Android" version="<6.3.0"/>

によって

<engine name="cordova-Android" version="&lt;6.3.0"/>

そしてコンパイルは最後に実行されます。 :)

0
bras cyril

再開します。これはplugin-cameraがAndroid oreoの最後のバージョンと互換性がないことを意味します

0
Renato Alvarez

Androidビルドでプラグインの不一致があるかもしれません。成功したビルドのために2つのコマンドを実行してください。

cordova platform rm Android
cordova platform add Android

2日を無駄にした後、これは私にとっては解決策にしか思えません。

0