4

ライブラリ プロジェクトを使用してアプリを作成しました (これも作成し、他のアプリで再利用します)。正常にビルドされますが、インストールして Eclipse (Ctrl+F11) で実行しようとすると、MyLib.apk が見つかりませんでした。コンソールのエラー行:

コンソール出力:

[2013-11-30 14:42:59 - MyApp] ------------------------------
[2013-11-30 14:42:59 - MyApp] Android Launch!
[2013-11-30 14:42:59 - MyApp] adb is running normally.
[2013-11-30 14:42:59 - MyApp] Performing com.sfinja.myapp.ActivitySubClass activity launch
[2013-11-30 14:42:59 - MyApp] Automatic Target Mode: using device '5752068FC64500EA'
[2013-11-30 14:43:00 - MyApp] Application already deployed. No need to reinstall.
[2013-11-30 14:43:00 - MyLib] Could not find MyLib.apk!
[2013-11-30 14:43:00 - MyApp] Starting activity com.sfinja.myapp.ActivitySubClass on device 5752068FC64500EA
[2013-11-30 14:43:00 - MyApp] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.sfinja.myapp/.ActivitySubClass }

だから私はSOを検索し、ライブラリプロジェクトのチェックボックスをオフにするだけで問題を解決するこのスレッドを見つけました。Is Library

案の定、ライブラリ プロジェクト (MyLib) でこのチェックボックスがオンになっているので、オフにすると、コンソールでこのエラーが表示されなくなりましたが、ランタイム NullPointerExceptions が発生し始めました。

これは、プロジェクトのセットアップ/構成に問題があることを明確に示唆しています (ビルドは問題ありませんが) が、それが何であるかを見つけるには、この紛らわしいチェックボックスについてもう少し理解する必要があると思います:

  1. このアプリで使用されている他のライブラリ プロジェクトがあり、すべてIs Libraryチェックボックスがオンになっていますが、MyLib が示す問題はありません。では、「IsLibrary」をチェックするかしないか。
  2. ライブラリの場合、Is Libraryチェックボックスをオフにする必要があるのはなぜですか? あのスレの2年前の正解は今も通用するの?
  3. APKが見つかりませんでした!本質的に他の何かのための「赤いニシン」ですか?
4

1 に答える 1

2

あなたと同じような問題に遭遇したことを覚えています。また、プロジェクトのIs Libraryチェックボックスをオフにすると問題が解決すると思いましたが、実際にはそうではありませんでした。

多くの時間を失った後、私は犯人を見つけました: プロジェクトの.classpath:

<classpathentry kind="src" path="/RogueProjLib"/>

(どのように侵入したかはわかりませんでした)

削除すると、「RogueProjLib.apk が見つかりませんでした!」というメッセージが表示されます。Is Libraryチェックボックスがチェックされた状態で、離れてプロジェクトがインストールされ、正常に実行されました!

それを踏まえて、私はあなたの質問に次のように答えます。

  1. あなたの他のライブラリプロジェクトはおそらくその中にはありません.classpath...はい、Is Libraryをチェックしてください。
  2. チェックする必要があるため、質問は無関係です。2 年前の回答は、最新の Eclipse/ADT バンドルとは関係ありません。
  3. はい、それはニシンです: 「.classpath に何をすべきかわからない奇妙な行があります」と伝える代わりに、「APK が見つかりませんでした」という不可解なメッセージを出力するだけです。

お役に立てれば。

于 2013-12-02T02:52:29.477 に答える