API Android Maps требуется openGL es 2

Документация Maps v2 гласит:

Поскольку для версии 2 API Android для Google Maps требуется OpenGL ES версии 2, вы должны добавить элемент <uses-feature> в качестве дочернего элемента manifest в AndroidManifest.xml:

 <uses-feature android:glEsVersion="0x00020000" android:required="true"/>` 

Это уведомляет внешние службы о требовании. В частности, это препятствует тому, чтобы Google Play Store отображал ваше приложение на устройствах, которые не поддерживают OpenGL ES версии 2.

Фактически, это exception если это не в манифесте. Я не хочу фильтровать свое приложение в магазине, я планирую использовать старые карты для старых устройств и показывать только новые карты, если присутствуют необходимые функции, обнаруженные во время выполнения, а не перед установкой.

Итак, как мне это сделать? APKs ли это быть чем-то вроде нескольких APKs с разными manifests ?

Solutions Collecting From Web of "API Android Maps требуется openGL es 2"

Окончательное обновление

Начиная с 2013/12/20, панель управления Android показывает, что примерно 100% устройств теперь поддерживают OpenGL 2.0+, поэтому этот ответ больше не уместен. Вы можете просто потребовать OpenGL ES 2.0+ в своем манифесте.

Обновить

Это исправлено с версии 7 дополнения к SDK Служб Google Play. Безопасно использовать <uses-feature android:glEsVersion="0x00020000" android:required="false"/> use <uses-feature android:glEsVersion="0x00020000" android:required="false"/> и обнаруживать OpenGL ES 2.0 во время выполнения .

Оригинальный ответ

Похоже, что для Android API Android v2 требуется явное объявление <uses-feature android:glEsVersion="0x00020000" android:required="true/> в AndroidManifest.xml поэтому нет возможности развернуть службы Android API Google Maps v2 без За исключением всех устройств OpenGL ES 1.x. На момент написания этой статьи панель Google Android Dashboard показала, что среди устройств 1,1 и 2,0 90,8% устройств поддерживают 2,0.

На конкретном устройстве (Motorola XOOM) этот код приводит к supportsEs2 = true :

 // Check if the system supports OpenGL ES 2.0. final ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo(); final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000; 

Однако, когда в манифесте нет объявления <uses-feature> , MapFragment бросает исключение RuntimeException:

  Caused by: java.lang.RuntimeException: Google Maps Android API only supports OpenGL ES 2.0 andabove. Please add <uses-feature android:glEsVersion="0x00020000" android:required="true" /> into AndroidManifest.xml at maps.y.ae.a(Unknown Source) at maps.y.bu.a(Unknown Source) at maps.yponCreateView(Unknown Source) at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:107) at android.os.Binder.transact(Binder.java:297) at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source) at com.google.android.gms.maps.SupportMapFragment$a.onCreateView(Unknown Source) at com.google.android.gms.internal.c$4.a(Unknown Source) at com.google.android.gms.internal.ca(Unknown Source) at com.google.android.gms.internal.c.onCreateView(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:884) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1066) at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1168) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:280) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669) ... 22 more 

Здесь нужно надеяться, что обновление библиотеки Maps устранит это ограничение, поэтому мы можем развернуть один APK и использовать API-интерфейсы времени выполнения, чтобы определить, загружать ли новый опыт Google Maps v2 или возвращаться к другому совместимому решению.

Это исправлено и будет выпущено в следующем выпуске API карт Android, как указано в номере № 4699

У меня была та же проблема, огляделся, и большая часть предлагаемого обходного пути для эмулятора не работала для меня. Затем я нашел сообщение, в котором был предложен эмулятор Genymotion . Этот эмулятор поддерживает OpenGL ES версии 2. Он также намного быстрее, чем стандартный эмулятор.