問題タブ [protobuf-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
749 参照

android-gradle-plugin - Gradle の「除外」トラブルシューティング: protobuf-java と protobuf-lite の両方でネストされた依存関係

Android アプリを (デバイス上で) テストしようとしていますが、gradle ビルド プロセス中に「エラー: プログラム タイプが既に存在します: com.google.protobuf.AnyProto」(または他のクラス) が表示されます。

grpc を実装し、ネストされた依存関係を使用する Google Firebase-Firestore DB を使用しています: com.google.protobuf:protobuf-lite:3.0.1。

また、google/Capillary ライブラリはネストされた依存関係を使用します: com.google.protobuf:protobuf-java:3.4.0.

Capillary lib 依存関係のみから com.google.protobuf を除外すると、アプリが実行され、必要な Capillary クラスがインスタンス化されるとクラッシュし、次のエラーが発生します: "java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/protobuf/ GeneratedMessageV3;"

除外なしのアプリの依存関係は次のとおりです。

そして、これが gradlew app:dependencies の (ツリー) 読み出しです:

Firestore と Capillary の両方から com.google.protobuf を完全に除外し、いずれかを個別に実装するなど、パッケージ除外のいくつかの組み合わせを使用してみました。

^これをいくつか組み合わせてみましたが、成功しませんでした。

「com.google.protobuf」を Capillary lib 依存関係からのみ除外すると (このライブラリの grpc 機能は使用していません)、アプリを実行できますが、必要なオブジェクトがキャピラリ ライブラリがインスタンス化され、次のエラーが表示されます:「java.lang.NoClassDefFoundError: 以下の解決に失敗しました: Lcom/google/protobuf/GeneratedMessageV3;」

Capillary依存関係の機能を壊すことなく、冗長な依存関係やクラス定義の欠落がないように、これを整理するのを手伝ってくれる人はいますか?