【问题标题】:Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY] on Glass XE16 KitKatGlass XE16 KitKat 上的失败 [INSTALL_FAILED_MISSING_SHARED_LIBRARY]
【发布时间】:2014-04-18 21:13:46
【问题描述】:

我有一个可以在 XE12 上正常运行的 Glass GDK 应用 (open-source on Github)。

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

:onebusaway-android:installDebug
包:/data/local/tmp/onebusaway-android-debug-unaligned.apk 失败 [INSTALL_FAILED_MISSING_SHARED_LIBRARY]

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

  1. 我已将我的compileSdkVersion 更改为"Google Inc.:Glass Development Kit Preview:19"
  2. 我已将/libs 文件夹中的gdk.jar 更新为来自<android-sdk>/add-ons/addon-google_gdk-google-19/libs 的文件
  3. 为预生产语音命令添加了 <uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/> 清单

(实际上,我自己在收到 XE16 更新之前进行了这些更改,基于其他人关于它在 XE16 上失败的报告 - 所以我可以确认通过上述更改,应用程序在 XE12 上仍然可以正常工作)。

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

我的 Glassware 是一种沉浸式 Activity,因此我不依赖 TimelineManager 或 Cards(在 XE16 中发生了变化)。

编辑

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

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

【问题讨论】:

  • 你使用的是什么开发环境? (ADT?)
  • 我正在使用gradlew installDebug 从命令行运行 Gradle,但我也在 Android Studio 中尝试。都不行。

标签: google-glass google-gdk


【解决方案1】:

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

根据Android docs

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

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

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

由于我没有包含 android:required="false",XE 16 正确地阻止了应用程序的安装。

显然 XE12 并没有强制执行此操作,但还是安装了该应用程序。

在添加android:required="false"attribute 之后:

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

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

【讨论】:

  • 仅供参考:此错误可能与安装 apk 时的此消息有关:The installation package uses a shared directory that does not exist. The package may not be compatible with the system. Error code: -9
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
相关资源
最近更新 更多