If you have any <uses-library>
elements that aren't supported by Glass in your AndroidManifest.xml
, you must include the android:required="false"
attribute, or remove the element completely, for your app to install on XE16. This is a change in behavior from XE12.
According to the Android docs:
If
<uses-library>
element is present and itsandroid:required
attribute is set to true, thePackageManager
framework won't let the user install the application unless the library is present on the user's device...The default android:required value is "true".
I borrowed code from a normal Android app for my Glass app, and I had a leftover element buried in the manifest:
<uses-library android:name="com.google.android.maps"/>
Since I didn't include the android:required="false"
, XE 16 is correctly preventing the app from installing.
Apparently XE12 didn't enforce this, and installed the app anyway.
After either adding the android:required="false"
attribute:
<uses-library android:name="com.google.android.maps"
android:required="false"/>
...or removing this <uses-library>
element completely, the app now installs correctly on XE16.