roc*_*cko 34 android google-maps-android-api-2
Maps v2文档说明:
由于Google Maps Android API的第2版需要OpenGL ES版本2,因此您必须在AndroidManifest.xml中添加
<uses-feature>元素作为元素的子manifest元素:Run Code Online (Sandbox Code Playgroud)<uses-feature android:glEsVersion="0x00020000" android:required="true"/>`这会向外部服务通知该要求.特别是,它可以防止Google Play商店在不支持OpenGL ES版本2的设备上显示您的应用.
事实上,exception如果不在清单中,它会抛出一个.我不想在商店中过滤我的应用程序,我计划继续使用旧设备的旧地图,并且只有在运行时检测到所需的功能时才显示新地图,而不是在安装之前检测到.
那我该怎么做?是否必须是多个APKs不同的东西manifests?
Jam*_*ald 35
最后更新
截至2013/12/20,Android Dashboard显示大约100%的设备现在支持OpenGL 2.0+,因此这个答案已不再适用.您可能只需要清单中的OpenGL ES 2.0+.
更新
这是在Google Play Services SDK插件的第7版中修复的.在运行时使用<uses-feature android:glEsVersion="0x00020000" android:required="false"/>和检测OpenGL ES 2.0是安全的.
原始答案
Google Maps Android API v2似乎需要明确<uses-feature android:glEsVersion="0x00020000" android:required="true/>声明,AndroidManifest.xml因此无法排除所有OpenGL ES 1.x设备,无法部署Google Maps Android API v2服务.在撰写本文时,谷歌的Android仪表板显示,在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;
Run Code Online (Sandbox Code Playgroud)
但是,当<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.y.p.onCreateView(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.c.a(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
Run Code Online (Sandbox Code Playgroud)
这是希望地图库的更新将消除此限制,以便我们可以部署单个APK并使用运行时API来确定是否加载新的Google Maps v2体验或回退到另一个兼容的解决方案.
| 归档时间: |
|
| 查看次数: |
24127 次 |
| 最近记录: |