Mapbox Android SDK崩溃 – “java.lang.Error:顶点着色器填充无法编译”

将我的Android Studio版本升级到2.1.3后,每次启动时我的应用程序都会崩溃。

更确切地说,它在尝试加载我的Mapbox View时崩溃(之前完全正常工作)。

我做了一些研究,这似乎是一个已知的问题,但我找不到任何解决方法来通过它……

我认为它可能只是模拟器的一个问题,但是现在我无法尝试很多物理设备,所以我不确定。 但无论如何,我真的需要使用模拟器来调试我的应用程序。

如果有人有任何相关信息,那将非常有帮助。 非常感谢!

这是我收到的错误日志。 第一个:

09-16 13:27:59.063 2938-2938/flow.bricks D/mbgl: {flow.bricks}[Android]: NativeMapView::notifyMapChange() 09-16 13:27:59.065 2938-2938/flow.bricks E/mbgl: {flow.bricks}[Shader]: Shader failed to compile: ERROR: Valid GLSL but not GLSL ES 09-16 13:27:59.065 2938-2938/flow.bricks E/mbgl: {flow.bricks}[Shader]: Vertex shader fill failed to compile: precision highp float; #ifdef GL_ES precision highp float; #else #define lowp #define mediump #define highp #endif attribute vec2 a_pos; uniform mat4 u_matrix; uniform lowp vec4 u_color; uniform lowp float u_opacity; void main() { lowp vec4 color = u_color; lowp float opacity = u_opacity; gl_Position = u_matrix * vec4(a_pos, 0, 1); } 09-16 13:27:59.066 2938-2938/flow.bricks D/AndroidRuntime: Shutting down VM 

第二个:

  --------- beginning of crash 09-16 13:27:59.068 2938-2938/flow.bricks E/AndroidRuntime: FATAL EXCEPTION: main Process: flow.bricks, PID: 2938 java.lang.Error: Vertex shader fill failed to compile at com.mapbox.mapboxsdk.maps.NativeMapView.nativeRender(Native Method) at com.mapbox.mapboxsdk.maps.NativeMapView.render(NativeMapView.java:139) at com.mapbox.mapboxsdk.maps.MapView.onDraw(MapView.java:1377) at android.view.View.draw(View.java:16178) at android.view.View.updateDisplayListIfDirty(View.java:15174) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.draw(View.java:16181) at android.support.v4.view.ViewPager.draw(ViewPager.java:2415) at android.view.View.updateDisplayListIfDirty(View.java:15174) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.draw(View.java:16181) at android.view.View.updateDisplayListIfDirty(View.java:15174) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.updateDisplayListIfDirty(View.java:15169) at android.view.View.draw(View.java:15948) at android.view.ViewGroup.drawChild(ViewGroup.java:3609) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) at android.view.View.draw(View.java:16181) at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2690) at android.view.View.updateDisplayListIfDirty(View.java:15174) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2615) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) a 

基于我在https://github.com/mapbox/react-native-mapbox-gl/issues/415#issue-177023433上的讨论

我能够将我的Android SDK Tools降级到25.1.7 ,并且我能够启动并成功加载x86模拟器。

我在https://github.com/mapbox/mapbox-android-demo上对此进行了测试。


在此处输入图像描述


这是我的其余设置

  • macOS El Capitan 10.11.6
  • Android Studio 2.2
  • 具体到我的mapbox-android-demo编译
  • classpath 'com.android.tools.build:gradle:2.2.0'
  • supportLibVersion = '24.2.0'
  • buildToolsVersion '24.0.1'