昨日から困っています。インターンシップでは、次のようなビルドエラーに直面しましたが、その理由がわかりませんでした。
$ 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 と PermissionHelper.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ファイルのみを削除できます。
解決策のどれも私のために働かないので私の2セントを追加しようとしています。私のために働いた唯一のもの:
cordova plugin rm cordova-plugin-compat --force
cordova platform rm Android
cordova platform add [email protected]
私がしなければなりませんでした:
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を削除することはできないと考えてください。
1つの解決策:cordova Android platform @6.2.3
をダウングレードする
$ cordova platform remove Android && cordova platform add [email protected]
質問に対する回答はすでにわかっていますが、正式なリリースノートへのリンクを追加したいと思います。
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。
ですから、必ずすべてのリストされているプラグインをリリースノートに掲載されているバージョンに更新してください。
私のIonic 3プロジェクトでは、実行するのに十分でした:
ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add [email protected]
そしてもう一度ビルドを実行します。プラットフォームを削除して追加する必要はありません。
私は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]
それは私のために働きます。
私は同じエラーがありました、そして私は私のプラグインにcompatプラグインを持っていませんでした
$ cordova platform remove Android && cordova platform add [email protected]
これが解決策です。
cordova plugin rm cordova-plugin-compat --force
cordovaプラグインrm cordova-plugin-compat --force
コルドバプラットフォームRMアンドロイド
コルドバプラットフォームは[email protected]を追加
cordovaプラグインは[email protected]を追加します
この順番で、私のために働きます!どうもありがとう
私はIonic 4を使用しています、そしてこれは私のためにそれを解決しました(実行するのに数秒かかるだけです):
cordova clean
他のプラグインの依存関係を更新した後、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を削除しました
私は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="<6.3.0"/>
そしてコンパイルは最後に実行されます。 :)
再開します。これはplugin-cameraがAndroid oreoの最後のバージョンと互換性がないことを意味します
Androidビルドでプラグインの不一致があるかもしれません。成功したビルドのために2つのコマンドを実行してください。
cordova platform rm Android
cordova platform add Android
2日を無駄にした後、これは私にとっては解決策にしか思えません。