2

Google カレンダー v3 API を使用する Android プロジェクトがあります。

Google API クライアントカレンダー API Javaライブラリを使用して、Google カレンダーでクエリを実行しています。

Maven の依存関係の設定に問題があります。ドキュメントのIDを使用してこれらのライブラリをpom.xmlに追加しましたが、それらの一部は古くなっているため、このpom.xmlになりました

<scope>provided</scope>google-api-client、google-http-client-jackson、および google-http-client-android ライブラリを配置する必要がありました。これは、これらのライブラリを dex しようとしたときに maven が失敗していたためです。

Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.4.1:dex (default-dex)

これで、この pom.xml によって .apk が正常に作成され、デバイスにインストールされます。しかし、提供されたライブラリを使用して Calendar API にクエリを実行しようとすると、アプリが失敗し、一部のクラスが見つからないというメッセージが表示されます。

12-19 17:32:17.247: E/dalvikvm(15119): Could not find class 'com.google.api.services.calendar.model.TimePeriod', referenced from method 

Eclipse からアプリをビルドしている場合 (すべての .jar は /libs フォルダーにあります)、すべて問題ありません。

したがって、これらの依存関係を Maven スクリプトに追加する正しい方法があるかどうか疑問に思います。Google には、動作しないリンクやサンプルを含む多くの古いドキュメントがあります。そうしないと、Google ライブラリを削除して、Calendar API クエリを自分で作成する必要がありました。

どんな助けでも大歓迎です。

答え:

xpp3.jar には javax パッケージのクラスが含まれているため、問題が発生していました。すべての Google ライブラリから手動で除外する必要がありました。

            <exclusion>
                  <artifactId>xpp3</artifactId>
                  <groupId>xpp3</groupId>
            </exclusion>
4

2 に答える 2

1

これらのライブラリは Android スタックの一部ではないため、apk に含める必要があるため、提供されたスコープを使用することはできません。それらをデフォルトのスコープに含めると、どのようなエラーが発生しますか?

アップデート:

疑わしいように、javax 名前空間プロジェクトを含めようとしています。それを引き起こしている依存関係が何であるかを調べてみてください

mvn dependency:tree

次に、それを除外する (同じクラスが既に android にあると仮定) か、別の名前空間にシェーディングする (そしてそれを使用するようにライブラリを更新する) か、より適したライブラリを見つける可能性があります。

于 2012-12-19T18:36:09.490 に答える
1

アルテム、

次のエラーと修正方法のアドバイスが表示されます。

[INFO] trouble processing "javax/xml/namespace/QName.class":
[INFO]
[INFO] Ill-advised or mistaken usage of a core class (java.* or javax.*)
[INFO] when not building a core library.

これは Java コア ファイルです。( ) を使用して、どの依存関係がそれを使用しているかを把握してみてくださいmvn dependency:tree

于 2012-12-19T20:47:59.487 に答える