Проверять или не проверять IsLibrary?

Я создал свое приложение, используя проект библиотеки (который я также создал для повторного использования в других приложениях). Сборка идет нормально, но когда я пытаюсь установить и запустить ее через Eclipse (Ctrl+F11), я получаю эту красную строку ошибки Could not find 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 Librarycheckbox проекта библиотеки.

Конечно же, в моем библиотечном проекте (MyLib) был установлен этот флажок, поэтому я снял его, и я больше не получаю эту ошибку в консоли, но затем я начал получать NullPointerExceptions во время выполнения.

Это явно говорит о том, что у меня есть проблема с настройкой/конфигурацией моего проекта (хотя он отлично строится), но чтобы понять, что это такое, я считаю, что мне нужно немного больше понять об этом запутанном флажке:

  1. У меня есть другие библиотечные проекты, используемые в этом приложении, во всех из которых установлен флажок Is Library проверено, но ни один из них не представляет проблемы, проявляемой MyLib. Итак, проверять или не проверять "IsLibrary"?
  2. Если это библиотека, почему флажок Is Library должен быть снят? Правильный ответ этой темы 2 года назад все еще действителен?
  3. Является ли сообщение Не удалось найти APK! отвлекающим маневром для чего-то другого?

person sfinja    schedule 30.11.2013    source источник


Ответы (1)


Я помню, как столкнулся с проблемой, похожей на вашу, которая сводила меня с ума. Я также думал, что снятие флажка проектов Is Library решит проблему, но на самом деле это не так.

После многих потерянных часов я нашел виновника: лишняя, избыточная, злая и полностью вводящая в заблуждение и разрушительная строка в проекте .classpath:

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

(Я понятия не имел, как это пробралось)

Как только я удалил его, сообщение "Не удалось найти RogueProjLib.apk!" исчезло, и проект установился и работал нормально, с установленным флажком Is Library!

Исходя из этого, я бы ответил на ваши вопросы следующим образом:

  1. Других ваших библиотечных проектов, вероятно, нет в этом .classpath... Да, проверьте Является ли библиотека.
  2. Вопрос неуместен, потому что его следует проверить. Ответ двухлетней давности больше не актуален для последней версии пакета Eclipse/ADT.
  3. Да, это отвлекающий маневр: вместо того, чтобы сказать вам «в моем .classpath есть странная строка, с которой я не знаю, что делать», он просто выдает это загадочное сообщение «Не удалось найти APK».

Надеюсь это поможет.

person ripopenid    schedule 02.12.2013