我使用库项目构建了我的应用程序(我也创建了一个库项目,以便在其他应用程序中重复使用)。它构建良好,但是当我尝试通过 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 并找到了 this thread只需取消选中库项目的 Is Library
复选框即可解决问题。
果然,我的图书馆项目 (MyLib) 选中了此复选框,所以我取消选中它,我不再在控制台中收到此错误,但随后我开始出现运行时 NullPointerExceptions。
这清楚地表明我的项目设置/配置存在问题(尽管它构建良好)但为了找到它是什么,我相信我需要更多地了解这个令人困惑的复选框:
- 我在这个应用程序中使用了其他图书馆项目,所有项目都有
Is Library
复选框 checked 但它们都没有出现 MyLib 出现的问题。那么,勾选还是不勾选“IsLibrary”? - 如果它是一个库,为什么要取消选中
Is Library
复选框? 2 年前该主题的正确答案是否仍然有效? - Could not find APK! 本质上是其他东西的“红鲱鱼”吗?
最佳答案
我记得遇到过与您类似的问题,这让我抓狂。我还认为取消选中项目 Is Library 复选框可以解决问题,但实际上并没有。
在浪费了很多时间之后,我找到了罪魁祸首:项目的 .classpath
中额外的、多余的、邪恶的、完全误导和破坏性的行:
<classpathentry kind="src" path="/RogueProjLib"/>
(我不知道它是怎么偷偷进来的)
一旦我删除它,“找不到 RogueProjLib.apk!” 消失了,项目安装并运行正常,选中了 Is Library 复选框!
据此,我将回答您的问题如下:
- 您的其他库项目可能不在那个
.classpath
中...是的,请检查 Is Library。 - 问题无关紧要,因为它应该被检查。 2 年前的答案不再与最新的 Eclipse/ADT 包相关。
- 是的,这是一个转移注意力的问题:它没有告诉您“我的 .classpath 中有一条奇怪的线,我不知道该怎么做”,它只是发出神秘的“找不到 APK”消息。
希望这对您有所帮助。
关于android - 检查或不检查 "IsLibrary"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305286/