我有一个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所做的更改:
compileSdkVersion
更改为"Google Inc.:Glass Development Kit Preview:19"
gdk.jar
文件夹中的/libs
更新为<android-sdk>/add-ons/addon-google_gdk-google-19/libs
<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/>
(我实际上是在收到XE16更新之前做了这些更改,基于它在其他人的XE16上失败的报告 - 所以我可以确认,通过上述更改,应用程序在XE12上仍能正常工作。)
我正在使用this third-party progress bar library,但从发布说明中我可以看出,GestureDetector
或Gesture
Glass类没有任何变化,这些类是Glass特有的类它依赖于。
我的玻璃器皿是一种身临其境的活动,因此我不依赖于TimelineManager或卡片(在XE16中更改)。
修改
我已尝试删除第三方进度条,但这似乎没有任何影响 - 仍然是同样的错误。
我也更新到Android Studio 0.5.5,没有从那里部署的运气(而不是从命令行运行gradlew installDebug
)。还尝试删除/libs/gdk.jar
,因为在Android Studio 0.5.5中不需要这样做,但仍然没有变化。
答案 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上正确安装。