Eclipse で、Android で使用するクラスのパッケージを作成し、Android プロジェクトでそれらをテストし、テスト コードを 2 番目のパッケージに保持しました。次に、コマンド ラインを使用して、プロジェクトの bin/classes ディレクトリ内のすべてのケースから jar ファイルを作成しました (テスト パッケージではなくライブラリ パッケージ用です)。「jar tf」を実行すると、パッケージ名が正しくプレフィックスとして付けられたすべてのクラスが表示されます。 .
次に、次のように、最初のパッケージをインポートしてメソッドを使用するアクティビティを含む別の Android プロジェクトを作成しました。
import uk.me.stevewaring.nestedsettings.NestedSettingsCommon;
import uk.me.stevewaring.nestedsettings.NestedSettingsReformat;
public class ShowNestedSettings extends Activity implements NestedSettingsReformat
{...
次に、新しいプロジェクトを右クリックし、ビルド パスを使用して jar を追加しました。私の jar は、Libraries の下の Java ビルド パスの上部と、Order and Export の下の下部に表示されます。
jar を追加すると、パッケージ内のメソッドについて不平を言っている lint の赤い波線がすべて消えました。
ただし、プロジェクトをデバッグしようとすると、次のLogCat
ようになります。
04-27 05:45:44.180: I/dalvikvm(14576): Failed resolving Lcom/example/shownestedsettings/ShowNestedSettings; interface 553 'Luk/me/stevewaring/nestedsettings/NestedSettingsReformat;'
04-27 05:45:44.210: W/dalvikvm(14576): Link of class 'Lcom/example/shownestedsettings/ShowNestedSettings;' failed
実行するクラスが存在しないため、実行は失敗します。
元のプロジェクトをビルドしたとき、ボックス " Mark this project as a library
" にチェックを入れませんでした。それが問題なのでしょうか? チェックボックスの効果がわかりません。それが問題である場合、そのアクションを遡及的に適用する方法はありますか、または完全な新しいプロジェクトを作成し、それを使用して jar を作成する前にパッケージをコピーする必要があります。それが問題ではない場合、私は何を間違えましたか?
詳細情報: インターフェイスの実装を削除した後、デバッグしようとすると、次のように表示されました。
04-27 05:52:10.919: I/dalvikvm(14677): Could not find method uk.me.stevewaring.nestedsettings.NestedSettingsCommon.initialise, referenced from method com.example.shownestedsettings.ShowNestedSettings.onCreate
04-27 05:52:10.949: W/dalvikvm(14677): VFY: unable to resolve static method 3566: Luk/me/stevewaring/nestedsettings/NestedSettingsCommon;.initialise (Landroid/app/Activity;)V
04-27 05:52:10.949: D/dalvikvm(14677): VFY: replacing opcode 0x71 at 0x0003
NestedSettingsCommon.initialise は、アクティビティが Jar 内のコードに対して行った最初の呼び出しでした。
また、コマンド ラインから作成する代わりに、Eclipse から Jar をエクスポートしてみました。それも違いはありませんでした。