失败[INSTALL_FAILED_MISSING_SHARED_LIBRARY]上玻璃XE16奇巧

2019-10-19 22:07发布

我有一个玻璃GDK应用程序( 开源Github上 )上XE12工作正常。

我昨天拿到了XE16更新,现在当我运行gradlew installDebug部署到玻璃,我得到的消息:

: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. 添加<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/>来体现为预生产的语音命令

(我实际上是由之前收到XE16更新自己的基础上,从别人失败的XE16它报告这些变化 - 所以我可以证实,上述变化的应用程序仍然在XE12正常工作)。

我使用这些第三方进度条库 ,但是从我可以释放告诉注意到什么都没有用改变GestureDetectorGesture玻璃类,这是它依赖于唯一的玻璃特定的类。

我的玻璃器皿是一种身临其境的活动,所以我不依靠TimelineManager或卡(在XE16改变)。

编辑

我试图消除第三方进度条,但似乎并没有什么影响 - 仍是同样的错误。

我也更新到Android 0.5.5工作室,没有运气部署从那里无论是(而不是运行gradlew installDebug通过命令行)。 还试图消除/libs/gdk.jar ,因为这不是Android Studio中0.5.5,仍然没有变化所需。

Answer 1:

如果您有任何<uses-library>不是由玻璃在您的支持元素AndroidManifest.xml ,必须包括android:required="false"的属性,或者完全删除元素,为您的应用程序安装在XE16。 这是从XE12行为的改变。

按照Android的文档 :

如果<uses-library>元素存在,且其android:required属性被设置为true, PackageManager框架不会让用户安装应用程序,除非该库目前在用户的设备上...默认的Android:要求值是真的”。

我借的代码从一个正常的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。



文章来源: Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY] on Glass XE16 KitKat