找不到Library.apk文件!

73

我成功地重新组织了我的应用程序,使得除了派生的Activity类中的一些方法外,其他所有内容都在库项目中。

它运行得非常好,但是Eclipse的控制台(而不是 LogCat!)发出以下错误消息:

[2011-06-13 19:54:08 - MyLibrary] Could not find MyLibrary.apk!

我清理了两个项目(库和应用程序),重新启动了Eclipse,重新构建了这些项目,但这个奇怪的错误消息仍然存在。

这个错误消息是什么意思?(特别是在一切似乎都运行正常的情况下)

我该如何摆脱它?

更新: 我尝试按照下面的建议删除项目,然后重新导入。 它没有帮助。 然后我找到了这个线程,它帮助我意识到应用程序的AndroidManifest.xml中有<uses-library>指向MyLibrary。 我删除了它,清理了项目并重新构建,但问题仍然存在。

我现在怀疑这是一个“真正的问题”,例如我可能进行了某些路径的错误配置或其他问题。那会是什么呢?

7个回答

162

我找到了问题的源头!

原来"有了新的库特性后,你不需要在属性的Java Build Path部分指定你依赖的Android项目,而是要在属性的Android部分进行操作"。

所以,我只需要进入应用程序项目的属性,点击项目选项卡,选择我的库项目并点击删除按钮即可。问题解决了。

在Eclipse Java EE中,选择项目属性,然后选择项目引用,勾选FacebookSDK(请参见截图)enter image description here

感谢Lance Nanek


3
我已经尝试过这种方法,它确实解决了问题,但现在当我在我的库中定义的类上执行"打开声明"操作时,它会打开 MyClass.class 文件,而不是 MyClass.java 文件。另一个有关打开 .class 而不是 .java 的 SO 问题(https://dev59.com/g2kw5IYBdhLWcg3wu9Fg)建议将库项目添加为构建路径的项目引用!因此看来没有办法同时解决这两个问题?(使用 Eclipse 4.2.0、JDT 3.8.0、ADT 20.0.3) - Herr Grumps
3
我发现这里的措辞有点令人困惑,但答案是正确的。Lance Nanek更清晰地描述了如何前往“Java Build Paths”,选择“Projects”选项卡,并从那里删除库。 - Alan Moore
5
执行了 remove 操作后,我的应用程序无法在库中找到符号。以下是解决方法:使用新的库特性,您不需要在属性的Java Build Path部分中指定依赖的Android项目,而是在属性的 Android 部分中完成。 - Bill Hoo
1
做完这个之后,我再也无法在我的项目中导入Facebook类了。Eclipse找不到它们。 - LeSam
1
在按照回答者的步骤后,您需要右键单击应用程序项目,点击属性,点击Android,在库部分勾选添加按钮并添加您的库项目。然后一切都应该正常工作,不会显示任何错误消息。 - ban-geoengineering
显示剩余5条评论

4

这很有趣……我没有完全按照答案所指示的去做。

我有一个名为“ConnectionHandler”的独立Android项目,它连接到Web服务以检索信息。该项目不包含任何活动类。(如果有的话,您需要更改应用程序主要清单文件,并按照以下说明操作)。

要将我的单独的ConnectionHandler项目用作库,我需要执行以下操作:

  1. 在“Main Application”中>选择项目属性>转到Java Build Path>添加Jars>选择ConnectionHandler的bin文件夹>选择connectionhandler.jar
  2. 在ConnectionHandler项目中>选择项目属性>Android>选中isLibrary
  3. 在“MainApplication”中>选择项目属性>转到Android>在库部分中添加对ConnectionHandler的引用。

这对有效,我可以连接到我们的Web服务,即使在我的主应用程序中没有源文件来实现这一点。所有内容都包含在我引用的ConnectionHandler jar中。

希望这能帮助某个人……


2

今天我在Eclipse的控制台视图上开始看到这个错误消息,但事实证明这不是问题所在。我的应用程序已经构建并安装到了我的设备上,甚至运行了一小部分时间(直到崩溃)。以下是我在Eclipse上的控制台视图:

[2013-06-03 09:42:25 - my-android] Android Launch!
[2013-06-03 09:42:25 - my-android] adb is running normally.
[2013-06-03 09:42:25 - my-android] Performing com.my.android.activity.MainActivity activity launch
[2013-06-03 09:42:25 - my-android] Uploading my-android.apk onto device '650rfs2e'
[2013-06-03 09:42:31 - my-android] Installing my-android.apk...
[2013-06-03 09:42:35 - my-android] Success!
[2013-06-03 09:42:36 - my-other-android] Could not find my-other-android.apk!
[2013-06-03 09:42:36 - android-SherlockFragment] Could not find android-SherlockFragment.apk!
[2013-06-03 09:42:36 - my-android] Starting activity com.my.android.activity.MainActivity on device 650rfs2e
[2013-06-03 09:42:36 - my-android] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.my.android/.activity.MainActivity }

但是仔细检查我的LogCat后,发现一个无聊的异常来自我正在尝试初始化的碎片。一旦我修复了我的碎片(它引发了NPE),一切都运行得很好,即使我的控制台仍然告诉我找不到那些库APK。


1

你尝试过从硬盘中删除项目,然后重新导入项目吗?当我遇到这个问题时,这种方法似乎对我有用。


2
你是说现在编程更像巫术而不是科学了吗? :) 我会尝试你的建议并回报。同时,+1 帮助的尝试。 - an00b
我刚刚尝试了只删除应用程序项目,然后重新导入它。这并没有帮助。现在我将尝试删除库项目... - an00b
我刚尝试移除该项目,然后重新导入它。但是没有帮助。我现在怀疑这是一个真正的问题,比如某些路径的错误配置或者我自己的其他问题。可能是什么呢? - an00b

0
对我来说,出现这种情况的原因是库项目和主项目具有相同的包。 改变包的最简单方法是右键单击库项目 > Android工具 > 重命名应用程序包

0
对我来说,解决这个问题的方法是从库项目的清单文件中删除错误条目。
当它第一次使用我的库项目时,崩溃只会在运行时发生。一旦我将应用程序名称属性更改为反映使用库项目的项目的正确应用程序类,那么它就可以工作了。

0

使用Eclipse首选项,您可能会发现库被添加到各个位置。我在/libs和Referenced Libraries文件夹中引用了一个库。我必须从这些位置删除或删除它们,并将其插入Android Dependencies(使用首选项-> Android并在“Is Library”复选框下方浏览)。

我的项目的正确布局: http://www.pasteall.org/pic/show.php?id=34513


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接