これは質問を意図したものではありません。むしろ、開発に外部APIを使用し、android.jarがプロジェクトに複製されない場合に、Androidでよく見られる問題です。
3 に答える
さまざまなフォーラム、Google、stackoverflowを検索した後、私は自分で解決策を見つけたようで、それを共有することを考えました。
外部ライブラリをリンクするときはいつでも、/ libフォルダーを作成してリンクし、そこにそれらの.jarをダンプすることをお勧めします(ファイルをコピーし、リンクしないことを意味します)。Eclipse- >ビルドプロパティ->ビルドパスの設定->ライブラリタブ->外部Jarの追加を使用してそれらをリンクします。これに/libフォルダーに保存されている必要な.jarを追加します。(Eclipseで「参照ライブラリ」として含まれているjarは/ libフォルダーに表示されなくなります!ただし、適切なリンクが行われているので心配しないでください。別の注意は、参照された/libjarが表示されないようにすることです。継承されるため、ビルドプロパティの[ライブラリ]タブにあります。)
もう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に対してこれを実行します。
乾杯!
これは私のために働いた。私はMavenを使用していますが、xpp3-1.1.4cの依存関係が「Mavenの依存関係」の下に表示されます。(依存関係を右クリックして)Maven-> "Exclude MavenArtifact..."を使用して除外する必要がありました。たくさんありがとう-これは本当にあいまいでした。
このエラーは、署名された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を正常に生成しました。(元に戻さずに)。