2012-05-07 7 views
0

私はアプリABを持っています。私はAのいくつかの方法をBに使いたいと思う。それは可能ですか?可能なAndroidプロジェクトは、他の(非ライブラリ)Androidプロジェクトに依存しますか?

プロジェクトのをBのビルドパスに追加しようとしましたが、コンパイラはそれで問題はありませんが、実行時にNoClassDefFoundError(プロジェクトAの最初に使用されたクラス)が表示されます。

私はEclipseでこれを作っています。

編集:私のプロジェクトBはプロジェクトAのテストなので、私はそれをする必要があります。他のものとAsynchTasksをテストしなければならないので、通常の方法でテストすることはできませんでした。 JUnitと連携するだから私はカスタムテストを含む通常のAndroidプロジェクトBを作っていると思った。しかし、それもうまくいかないので、私は元のテストプロジェクトに戻ってJUnitテストではなくカスタムを実装しました。醜い方法で、しかしそれは動作します。

+0

2つのアプリケーション(つまり、影響力のあるアプリケーションb)間の通信を実装するか、コードの再利用が必要ですか(つまり、両方のアプリケーションの計算が似ていますか? – k3b

+0

http://stackoverflow.com/questions/10478126/possible-android-project-depends-of-other-non-library-android-project –

答えて

2

説明しているのはLibrary Projectです。複数のAndroidプロジェクトに共通のソースコードとリソースがある場合は、それらをライブラリプロジェクトに移動して、アプリケーションやバージョン間での管理が容易になります。したがって、同じコンポーネントのいくつかを使用する複数の関連アプリケーションを開発している場合は、冗長コンポーネントをそれぞれのアプリケーションプロジェクトから移動し、別々のライブラリプロジェクトで同じコンポーネントの再利用可能な単一のセットを作成します。

このように、はほぼですが、それほど説明できません。 Eclipseでは、ライブラリプロジェクトとしてAndroidアプリケーションプロジェクト(つまり、.apkファイルにコンパイルされたプロジェクト)を参照することはできません。Aプロジェクトを単にライブラリプロジェクトとして作成し、B参照Aを作成するだけです。代わりに、あなたは、に

  1. Create新しいライブラリプロジェクトCが必要になります。
  2. 一般的なメソッド/クラスをプロジェクトABからライブラリプロジェクトCに移動します。
  3. ABreferenceライブラリプロジェクトCがあります。
+0

私はそれに必要な理由は、プロジェクトBがプロジェクトのテストであるからですA. AsynchTasksをテストしなければならないものとJUnitでは動作しないものがあるため、通常の方法でテストすることはできませんでした。だから私はカスタムテストを含む通常のAndroidプロジェクトBを作っていると思った。しかし、それもうまくいかないので、私は元のテストプロジェクトに戻ってJUnitテストではなくカスタムを実装しました。醜い方法で、しかしそれは動作します。 – Ixx

+0

申し訳ありませんが、わかりません。何がプロジェクト 'A'自体の中ですべてのテストをしないのですか?プロジェクトAをテストするために全く新しいプロジェクトBを作成しなければならないのは不思議なことです。 –

+0

さて、それは "推奨された"方法だと思われるので、http://developer.android.com/resources/tutorials/testing/helloandroid_test.htmlそして私がAndroidアプリで私のテストをしたら、apkでエクスポートされません?そして、私はどのように活動にリンクされていないでそれを始めるのですか? – Ixx

関連する問題