Glass XE16 KitKat上的[INSTALL_FAILED_MISSING_SHARED_LIBRARY]失败

时间:2014-04-17 14:29:23

标签: google-glass google-gdk

我有一个Glass GDK应用程序(open-source on Github)可以在XE12上正常工作。

我昨天获得了XE16更新,现在当我运行gradlew installDebug部署到Glass时,我收到了消息:

  

:onebusaway-机器人:installDebug
          pkg:/data/local/tmp/onebusaway-android-debug-unaligned.apk                                                                  失败[INSTALL_FAILED_MISSING_SHARED_LIBRARY]

以下是我更新到XE16所做的更改:

  1. 我已将compileSdkVersion更改为"Google Inc.:Glass Development Kit Preview:19"
  2. 我已将gdk.jar文件夹中的/libs更新为<android-sdk>/add-ons/addon-google_gdk-google-19/libs
  3. 中的文件
  4. 为预生产语音命令的清单添加了<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/>
  5. (我实际上是在收到XE16更新之前做了这些更改,基于它在其他人的XE16上失败的报告 - 所以我可以确认,通过上述更改,应用程序在XE12上仍能正常工作。)

    我正在使用this third-party progress bar library,但从发布说明中我可以看出,GestureDetectorGesture Glass类没有任何变化,这些类是Glass特有的类它依赖于。

    我的玻璃器皿是一种身临其境的活动,因此我不依赖于TimelineManager或卡片(在XE16中更改)。

    修改

    我已尝试删除第三方进度条,但这似乎没有任何影响 - 仍然是同样的错误。

    我也更新到Android Studio 0.5.5,没有从那里部署的运气(而不是从命令行运行gradlew installDebug)。还尝试删除/libs/gdk.jar,因为在Android Studio 0.5.5中不需要这样做,但仍然没有变化。

1 个答案:

答案 0 :(得分:3)

如果<uses-library>中有Glass不支持任何AndroidManifest.xml个元素,则必须包含android:required="false"属性,或者完全删除元素才能安装您的应用在XE16上。这是XE12的行为变化。

根据Android docs

  

如果存在<uses-library>元素并且其android:required属性设置为true,则PackageManager框架将不允许用户安装应用程序,除非用户设备上存在库...默认的android:required值为“true”。

我从我的Glass应用程序的普通Android应用程序中借用了代码,并且我在清单中隐藏了一个剩余的元素:

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

由于我没有包含android:required="false",因此XE 16正在阻止安装该应用。

显然XE12没有强制执行此操作,无论如何都安装了应用程序。

添加android:required="false"属性后:

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

...或完全删除此<uses-library>元素,该应用现在可以在XE16上正确安装。