2

これは私を困惑させました。私は明らかに何かが欠けていますが、何がわからないのです。

私はライブラリ(Androidライブラリではなく-通常のJavaライブラリプロジェクト)を持っており、そのライブラリは他のライブラリを使用しています。したがって、セットアップは次のとおりです。

myApi.jar

   |
   +-- com/myapi/ ... (.class files here).
   | 
   +-- libs/
        |
        +-- lib1.jar
        +-- lib2.jar

さて、myApi.jarAndroidプロジェクトのlibsディレクトリのプロジェクトに含めると、のようMyAndroidProject/libsに、com.myapi. ...クラスのみがファイルに含まれclasses.dexます。lib1.jarおよびlib2.jarのクラスはclasses.dexに含まれていません

明らかな回避策は、myApi.jarファイルからlib1.jarとlib2.jarを削除することです。代わりにそれらも配置しMyAndroidProject/libsます。ただし、これは、myApiのユーザーが、ビルドパスに配置される追加のJARファイルがあることを知っている必要があることを意味します。これは私が避けたいものです。

では、ライブラリJARによって内部的に使用されているJARファイルをファイルに含めるために特別なことをする必要がありclasses.dexますか?

4

1 に答える 1

1

ただし、これは、myApiのユーザーが、ビルドパスに配置される追加のJARファイルがあることを知っている必要があることを意味します。これは私が避けたいものです。

ここで、Androidの動作は通常のJavaの動作と同じですmyApi.jar。Swingアプリをサポートしている場合は、すべてのJARを配布するか、すべてのJARを1つにマージする必要があります。Androidでも同じです。依存関係のあるJARのすべてのクラスを独自のクラスに折りたたむことも、JARを再利用するプロジェクトに依存関係を独自の依存関係として追加させることもできます。

JARコンテンツのマージは、技術的またはライセンスに影響を与える可能性があることに注意してください。したがって、これが本当に実行したいことであることを確認してください。

于 2011-11-08T13:42:35.617 に答える