检查或不检查“IsLibrary”?

时间:2013-11-30 20:28:59

标签: android apk adt android-library library-project

我使用库项目(我也创建了,在其他应用程序中重用)构建了我的应用程序。它构建良好,但当我尝试安装&通过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并找到this thread,只需取消选中库项目的Is Library复选框即可解决问题。

果然,我的图书馆计划(MyLib)已选中此复选框,因此我取消选中它,我不再在控制台中收到此错误,但随后我开始获得运行时NullPointerExceptions。

这清楚地表明我的项目设置/配置存在问题(虽然它构建良好)但是为了找到它的内容,我相信我需要更多地了解这个令人困惑的复选框:

  1. 我在这个应用程序中使用了其他库项目,所有项目都有Is Library复选框已选中,但它们都没有显示MyLib展示的问题。那么,检查或不检查“IsLibrary”?
  2. 如果是库,为什么要取消选中Is Library复选框?从2年前那个线程的正确答案是否仍然有效?
  3. 无法找到APK!本质上是“红鲱鱼”的其他内容吗?

1 个答案:

答案 0 :(得分:2)

我记得遇到类似于你的问题,这让我疯了。我还认为取消选中项目 Is Library 复选框可以解决问题,但实际上并没有解决问题。

经过大量的失去工作后,我找到了罪魁祸首:项目.classpath中的一个额外的,多余的,邪恶的,完全误导和破坏性的线:

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

(我不知道它是如何偷偷摸摸的)

删除后,“无法找到RogueProjLib.apk!”消失,项目已安装并运行正常,选中 Is Library 复选框!< / p>

基于此,我将回答您的问题如下:

  1. 您的其他图书馆项目可能不在.classpath ...是的,请检查是图书馆
  2. 问题无关紧要,因为应该进行检查。 2年前的答案与最新的Eclipse / ADT软件包不再相关。
  3. 是的,这是一个红色的鲱鱼:而不是告诉你“我的.classpath中有一个奇怪的线路,我不知道该怎么做”,它只是发出了一个神秘的“找不到APK”的消息。
  4. 希望这有帮助。