Some application developers encounter issues in running their apps in VMI. This article enumerates the possible reasons why some apps cannot run with the product.
VMI is incompatible with certain settings in APK. An app may fail to work in VMI if it has the following settings:
- The application requires hardware support (e.g. bluetooth or NFC).
- For bluetooth, APK's AndroidManifest.xml contains the following string:
<uses-permissionandroid:name="android.permission.BLUETOOTH" />
- For NFC, APK's AndroidManifest.xml contains the following string:
<uses-permission android:name="android.permission.NFC" />
- For bluetooth, APK's AndroidManifest.xml contains the following string:
- The application needs OpenGL ES 2.0 or 3.0 support. APK's AndroidManifest.xml contains the following strings:
<uses-feature android:glEsVersion="0x20000" android:required="true"/>
<uses-feature android:glEsVersion="0x30000" android:required="true"/> - The application needs Google Framework. APK's AndroidManifest.xml contains the string below:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
- The application must be run in SDK which version is greater than 22. APK's AndroidManifest.xml contains the following string wherein "minSdkVersion" is higher than 22:
<uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" />
In order for an app to work with VMI, the "minSdkVersion" value should be less than or equal to 22. - An application contains mismatched ARM and x86 lib. VMI supports APK with x86 since we are running on x86 server. Also, VMI supports APK with ARM lib because it has abox. However, APKs that put ARM (or other non-x86 processors) lib in x86 directory are not supported. APKs with mismatched x86 libs and ARM libs are unsupported too. Below are some examples of unsupported settings:
- An APK has "armeabi" and "x86" directories. There are a.so, b.so, and c.so in "armeabi", and another a.so, b.so and c.so in "x86". But b.so is in ARM format, which means there is an ARM lib in x86 dir.
- An APK has "armeabi" and "x86" directory. There are a.so, b.so, and c.so in "armeabi", but only a.so and b.so in "x86".