16

これは質問を意図したものではありません。むしろ、開発に外部APIを使用し、android.jarがプロジェクトに複製されない場合に、Androidでよく見られる問題です。

4

3 に答える 3

10

さまざまなフォーラム、Google、stackoverflowを検索した後、私は自分で解決策を見つけたようで、それを共有することを考えました。

  1. 外部ライブラリをリンクするときはいつでも、/ libフォルダーを作成してリンクし、そこにそれらの.jarをダンプすることをお勧めします(ファイルをコピーし、リンクしないことを意味します)。Eclipse- >ビルドプロパティ->ビルドパスの設定->ライブラリタブ->外部Jarの追加を使用してそれらをリンクします。これに/libフォルダーに保存されている必要な.jarを追加します。(Eclipseで「参照ライブラリ」として含まれているjarは/ libフォルダーに表示されなくなります!ただし、適切なリンクが行われているので心配しないでください。別の注意は、参照された/libjarが表示されないようにすることです。継承されるため、ビルドプロパティの[ライブラリ]タブにあります。)

  2. もう1つの大きな問題は、GoogleAPIが使用されている場合でした。特に、java/javaxのいくつかのコアライブラリ関数を使用するもの。これには十分注意してください。エラーは、DalvikVMがこれらをリンクしようとしますが、重複が見つかったため失敗し、どちらを参照するかを決定できないことです。以下はエラーです。

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

そのような場合、私が観察したのは、このクラスがxpp3-1.1.4c.jarで使用されているということです。これを/libフォルダーにコピーした場合は、削除してください。次に、プロジェクトをクリーンアップして、新しいビルドを作成します。そして船はその後スムーズに航行します。

そのような重複が存在する場合は、他の参照される.jarに対してこれを実行します。

乾杯!

于 2012-04-16T15:06:38.850 に答える
2

これは私のために働いた。私はMavenを使用していますが、xpp3-1.1.4cの依存関係が「Mavenの依存関係」の下に表示されます。(依存関係を右クリックして)Maven-> "Exclude MavenArtifact..."を使用して除外する必要がありました。たくさんありがとう-これは本当にあいまいでした。

于 2013-05-27T21:40:38.097 に答える
2

このエラーは、署名されたAPKを生成しようとした場合にのみ表示されます。これを修正するには2つの方法があります。

1.この投稿でAmiraElsayedIsmailがコメントしたように、これはgradle2.3.3に 戻す必要があります。

これを行うには、Android Studio 2.3.3もダウンロードする必要があります。これは、studio3.0.1にはgradleプラグイン3.0以降が必要なためです。

これが最初の解決策でした。ただし、AndroidStudioとgradleプラグインを元に戻すのは面倒な解決策です。

2. すべての依存関係の競合を解決します。

Gradleを元に戻すと、Studio 2.3.3に関心のある警告が表示されました(Studio 3.0.1に依存関係の競合の警告が表示されない理由がわかりません

Warning:WARNING: Dependency xpp3:xpp3:1.1.4c is ignored for debug as it may be conflicting with the internal version provided by Android. Warning:WARNING: Dependency org.apache.httpcomponents:httpclient:4.3.3 is ignored for debug as it may be conflicting with the internal version provided by Android.

したがって、これらの依存関係はデバッグでは無視されますが、リリースでは無視されません。これらの依存関係を除外することでこれを修正しました。

configurations {
        all*.exclude group: 'xpp3', module: ['xpp3' ,'httpclient']
    }

この後、gradle3.0.1を使用して署名付きAPKを正常に生成しました。(元に戻さずに)

于 2018-02-06T16:22:15.880 に答える