アプリケーションを Box、Dropbox、および Google Drive と統合しようとしています。これらの 3 つのサービスはすべて、多数のサードパーティ jar を必要とします。さらに、私のアプリケーションにはすでにいくつかのサードパーティの jar が必要です。Eclipse からアプリケーションを実行しようとすると、次のエラーが発生します。
dex を実行できません: メソッド ID が [0, 0xffff] にありません: 65536 Dalvik 形式への変換に失敗しました: dex を実行できません: メソッド ID が [0, 0xffff] にありません: 65536
アプリケーションのメソッドが多すぎるために、このエラーが発生したようです。これらのメソッドの大部分はサードパーティの jar からのものであると確信しているため、コードを単純化してこれを解決しようとするのは非現実的です。これら2つの提案をオンラインで見つけました。
project.propertiesに追加
dex.force.jumbo=true
します (そして adt バージョン 21 を使用します)。私はこれをしましたが、それでもエラーが発生します。http://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.htmlで説明されているように、複数の dex ファイルを使用します。これが唯一の選択肢のようですが、私の場合にどのように適用されるかわかりません。問題は、Drive のようなサービスに依存関係が多すぎることです。この解決策では、依存関係を参照するときに変化形を使用するように Drive ソースを変更する必要はありませんか? (これは明らかにオプションではありません)。
プロガードを使用して、未使用のコード/メソッドを縮小削除します。proguard を使用したアプリケーションのエクスポートは機能し、ドキュメント サービスの統合は 4.0 以上のデバイスで期待どおりに機能します。ただし、2.3 デバイスでテストすると、classnotfound エラーがスローされます。
というわけで、この件に関して何かアドバイスをいただければ幸いです。オプション 2 は私の場合の解決策ですか? 検討すべき別の解決策はありますか?