Many Android devices no longer supported in 4.14

I have just upgraded from 4.12 to 4.14 and am now experiencing distribution issues on the Play Store.

I have been packaging the game for Android with the texture compression ETC2, as all my target platforms support this format. Uploading ETC2 packages to the store has been working fine with 4.12, but since upgrading to 4.14 it removes 10,712 devices from the supported list (everything basically).

It is also worth noting that the ETC2 package works fine on ‘unsupported’ devices when deployed manually.

This is what a 4.12 ETC2 package looks like on the play store:

116057-capture2.png

and this is what the 4.14 ETC2 package looks like:

This is due to the new code adding the required extensions to the AndroidManifest.xml for the cooked texture format. In the case of ETC2, this is GL_COMPRESSED_RGB8_ETC2 and GL_COMPRESSED_RGBA8_ETC2_EAC.

I’m looking at the logic the store uses and it looks like it is actually expecting OpenGL ES 3.0 for this (ETC2 required by 3.0). I’ll change the manifest generation to use 3.0 as minimum if only ETC2 is included in the package and not use the extensions in that case.

You can return to the old behavior for ETC2 by modifying GenerateManifest() in UEDeployAndroid.cs; remove these lines:

if (bETC2Enabled)
{
	Text.AppendLine("\t<supports-gl-texture android:name=\"GL_COMPRESSED_RGB8_ETC2\" />");
	Text.AppendLine("\t<supports-gl-texture android:name=\"GL_COMPRESSED_RGBA8_ETC2_EAC\" />");
}

Hi, thanks . After more research I understand why UE4 is now declaring the texture formats. I don’t think I want to revert to the old functionality as that would allow devices that don’t support ETC2 to download my game.

What is the reason the play store is restricting my ETC2 build to 332 devices?

I’ve made the changes for 4.14.1 (changes now available on GitHub here: [link text][1]).

With the changes in place (remove ETC2 formats if only ETC2 selected, and require ES 3.0+), I’m seeing 3769 supported devices for my test APK.

If you don’t want to make code changes, you can also try this. Make a ManifestRequirementsOverride.txt in the project’s Build/Android directory with the following for your ETC2 APK:

  <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="9" />
  <uses-feature android:glEsVersion="0x00030000" android:required="true" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="android.permission.VIBRATE" />

Edit the permissions as needed (look at the AndroidManifest.xml in Intermediate/Android/APK from a previous packaging as a guide).

https://github.com/EpicGames/UnrealEngine/commit/36332776dadaa24f5eafe063f6ae5a6699fa39e8

Great! Thank you very much. When is 4.14.1 tipped for release?

I will try the override in the meantime. Thanks again!

4.14.1 has released, could you verify that you’re no longer experiencing this issue?

Thanks!