web-dev-qa-db-ja.com

複数のdexファイル-Dalvik形式への変換に失敗しました-dexを実行できません

プロとライトの2つのアプリバージョンがあります。両方ともv1.01ですでに市場に出ています。両方のv1.1をリリースしようとしています。このアップデートには、グローバルリーダーボードを使用するためのSwawrmConnect統合が含まれています。

私は自分のコードを正しく維持していないことを知っていると言うことから始めなければなりません。 2つの完全に独立したアプリがあり、それらのアプリのコードのおそらく90%を共有しています。ライブラリを作成してコードを共有する方法を理解できなかった1週間後または2週間後または3週間後、私はそれらを個別に保守しました。

SwarmConnectは、私が使用した最初のjarであり、2つのアプリのライブラリを作成する必要がありました(以下のファイル構造のスクリーンショットを参照)。

現在、私のライトバージョンは動作しており、リリースの準備ができています。私は現在、プロ版をリリースに必要な場所に持って行こうとしています。すべてのJava/xmlファイルが最新で準備ができていると確信しています。エミュレータでプロバージョンを実行しようとすると、次のエラーが表示されます。

[2013-04-18 11:24:41 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/swarmconnect/loopj/Android/http/AsyncHttpResponseHandler;
[2013-04-18 11:24:41 - BibleTriviaPro] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/swarmconnect/loopj/Android/http/AsyncHttpResponseHandler;

私が試したこと:

  • クリーン/リビルド
  • Eclipseを更新する
  • Binおよびgenフォルダーを削除する
  • Eclipseを再起動します
  • プラス他のもの

私のファイル構造:

enter image description here

問題は、SwarmConnectを2つのプロジェクト(ライトとプロ)のライブラリとして使用しようとしていることでしょうか?

編集:

以下は、完全に機能しているLiteバージョンのファイル構造です。エミュレータでコンパイルおよび実行します。

enter image description here

18
Matt

偶然にも、昨日の前日に同じ問題に遭遇しました。ここにあなたがすることをお勧めします。

何よりもまず、「Android Dependencies」/「libs」フォルダーに現在存在するすべてのjarのバックアップがあることを確認してください。

では、次の手順に従って、まずライトバージョンを修正しましょう。

  1. EclipseのProject Explorerの下の「Android Dependencies」フォルダーからAndroid-support-v4.jarを除くすべてのjarファイルを削除します。

  2. 同様に、Android-support-v4.jarを除くすべてのJarファイルを、EclipseのProject Explorerの下のlibsフォルダーから削除します。

  3. プロジェクトを右クリック->プロパティを選択-> Java Build Path-> Add External JARsを選択。必要なjarファイルをすべて追加します(必ず追加してください特定のjarファイルは1回のみ)。

最後にプロジェクトをクリーンアップしてビルドします。次に、同じバージョンの手順をプロ版に適用します。それはそれを行う必要があります。

更新:-これをすべて実行した後、Eclipseがいくつかのコンパイル時エラーについて摩擦しているのを見る場合、必要なインポートを行うことでコンパイル時エラーを修正するだけです Ctrl+Shift+O

[ソースの依存関係などの点で、プロジェクトのproバージョンとliteバージョンの間にリンクはないと仮定します。基本的に、これらは完全に独立していると言います。]

お役に立てれば。

37
Sriram

これがあなたの問題だと強く思う

  1. プロジェクトを右クリックします
  2. 「Android」オプションの下を見てください
  3. 下のペインで、「Swarm Connect」が存在するかどうかを確認します
  4. そうでない場合は、追加します(既に存在していると思われますが)
  5. LibsディレクトリからSwarm.jarを削除します

ライブラリプロジェクトをEclipseのAndroidプロジェクトに追加すると、libsディレクトリに表示されません。実際に.jarファイルだけをプロジェクトに追加しようとしましたそれが間違ったアプローチであると言われました(少なくともAPI 14までは)。

私の推測では、「非プロ」バージョンではプロジェクトオプションにリンクしていないため、正しくコンパイルされます。それでも、ライブラリが独自のリソースにアクセスしようとするときの問題を回避するために、今説明した方法でリンクする必要があります。

2
DigCamara

上記の解決策は私にとってはうまくいきませんでした。私がしなければならなかったのは、外部でlibsフォルダにjarを追加し、注文とエクスポートタブの下でUncheck Android private library。

 right click--
             Java build path--
                               order and export tab ->Uncheck Android private libraries 
                                   and add jars in the libs folder externally.

上記の手順を実行します。なぜこれが起こっているのか分からない。

2
war_Hero

上記の@Sriramの答えを試しました。うまくいきませんでした。

次に、プロジェクト->プロパティ-> Javaビルドパス->ライブラリの場所からライブラリを削除し、実際のjarファイル(Android-support-v4.jarとAndroid-support-v13.jarの両方が必要)をlibsフォルダに追加する必要がありました私のプロジェクトの。それは働いた:

final structure

(「参照ライブラリ」フォルダーがないことに注意してください)

0
alexey