Android中缺失共享库。

45

02-18 00:02:08.432: ERROR/PackageManager(57): Package com.example.brown requires unavailable shared library com.google.android.maps; failing!

我在logcat中看到这个异常。

有没有人能够指导我?


请详细说明。这是来自模拟器吗?设备?使用的SDK版本是什么? - Tom R
8个回答

65
如CommonsWare所说,您的模拟器缺少库。 Google Maps Library文档的概述页面提供了有关如何为模拟器创建正确类型的虚拟设备的信息。Overview page。 要点是:

使用android命令启动AVD管理器,无需任何选项。 如果您在Eclipse / ADT中进行开发,还可以从“Window> Android SDK and AVD Manager”访问该工具。

  1. 单击“新建”按钮开始创建新的AVD。
  2. 在出现的对话框中,指定AVD的名称,并选择要AVD使用的系统映像目标。 选择“Google APIs(Google Inc.)”目标之一,确保选择一个API级别与应用程序清单中的android:minSdkVersion属性相匹配的版本,如上所述。
  3. 配置其他选项,然后单击“Create AVD”。

完成创建AVD后,您可以从AVD Manager UI运行它,或者您可以使用模拟器的命令行界面。 如果您在Eclipse中进行开发,可以配置运行配置文件以启动AVD并在其上安装应用程序。

有关AVD的更多信息,请参见Android Developers网站上的Android Virtual Devices


13

我在真机设备上遇到了类似的问题。经过大量的搜索,我找到了如下解决方案:

修复缺失共享库。事实证明,在某些自定义ROM中,comp.google.android.map库是缺失的,你需要手动安装它。

  • 下载googleapps
  • 提取两个文件
  • system/etc/permissions/com.google.android.maps.xml
  • system/framework/com.google.android.maps.jar
  • 重新挂载/system文件系统,设置为可写(mount -o rw,remount /system)
  • 将文件复制进去
  • 对它们进行chmod 644操作
  • 重启

2
我认为这是真正的解决方案,其他只是解释,这甚至适用于实际设备以及模拟器。 - iBabur
1
太棒了,谢谢!这是我找到的唯一正确的答案。这应该被接受并获得100个赞。 - Siddharth

10

这个错误发生在我的设备上,而不是AVD模拟器,就像其他答案中提到的那样。在我的情况下,我正在Nexus S上运行一个没有安装谷歌地图的自定义ROM。

我在其他地方读到,com.google.android.maps共享库已经捆绑在ROM本身中,而不是作为APK的一部分。

因此,对于我的解决方案是恢复到预装了Google Maps的原始ROM。

顺便说一句,这个线程的标题指的是在DDMS LogCat中找到的错误。大多数用户将看到的第一个错误(在检查LogCat之前)将出现在Eclipse控制台中:

Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY 
Please check logcat output for more details.

8

您的模拟器缺少Google APIs。创建一个包含Google APIs的新AVD,这个错误应该就会消失。


谢谢回复。但仍然遇到了异常。您能告诉我逐步的过程吗? - Praveen

4
作为jfritz42,我在使用自定义ROM(Cyanogenmod)的真实设备上遇到了这个错误。该错误是由于我没有安装Google应用程序包引起的,因为它包含了很多令我烦恼的应用程序。然而,有一种解决方案可以在不使系统混乱的情况下安装google.maps库。只需下载该软件包(zip文件),并从该zip文件中的system/app目录中删除所有.apk文件。之后,您可以通过使用ROM Manager或通过恢复模式安装zip。然后,您应该已经在系统上安装了地图库。此软件包中包含的Google应用程序(例如地图应用程序)可以随后单独安装。

2

如果是真实设备,请从清单文件中删除以下内容:

<uses-library android:name="com.google.android.maps" />


0

在 AVD 正确设置并正常工作后,我遇到了这个错误。AVD 仍在使用 Google API,我可以在 Eclipse 中看到 maps 库的引用。我发现解决这个问题的唯一方法是删除 AVD 并创建一个新的,就像 fiXedd 建议的那样。


0

fiXedd(见上文)是正确的。

您可以编辑已创建的设备或创建新设备。当您在AVD Manager中创建或编辑设备时,不要选择此类版本目标:

Android x.x.x - API Level x

而应该使用这种类型:

Google APIs(Google Inc.)- API Level x


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