2014-04-17 85 views
1

我有一個在XE12上正常工作的Glass GDK應用程序(open-source on Github)。玻璃XE16上的故障[INSTALL_FAILED_MISSING_SHARED_LIBRARY] KitKat

我昨天拿到了XE16更新,現在當我運行gradlew installDebug部署到玻璃,我得到的消息:

:onebusaway-安卓installDebug
PKG:/數據/本地的/ tmp/onebusaway-Android的調試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的玻璃類。

我的玻璃器皿是一個身臨其境的活動,所以我不依賴於TimelineManager或卡片(在XE16中進行了更改)。

編輯

我試圖消除第三方進度條,但似乎並沒有什麼影響 - 仍是同樣的錯誤。

我也更新到Android Studio 0.5.5,沒有運氣從那裏部署(而不是從命令行運行gradlew installDebug)。也試過刪除/libs/gdk.jar,因爲這在Android Studio 0.5.5中不是必需的,仍然沒有改變。

+0

你在使用什麼開發環境? (ADT?) – ErstwhileIII

+0

我使用'gradlew installDebug'從命令行運行Gradle,但我也嘗試從Android Studio中嘗試。既沒有工作。 –

回答

2

如果您有沒有被玻璃在AndroidManifest.xml支持的任何<uses-library>元素,你必須包括android:required="false"屬性,或者完全刪除元素,爲您的應用程序安裝在XE16。這是XE12的行爲改變。

按照Android docs

如果<uses-library>元素存在,且其android:required屬性設置爲true,PackageManager框架不會讓用戶安裝應用程序,除非該庫目前在用戶的設備上...默認的android:required值是「true」。

我借的代碼從一個正常的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。