示例中心
功能在线体验
控制台

在地图SDK的Jar包里面,有一个assets文件夹,里面是地图的图片资源,比如显示在地图上面的地图标之类的。

打包APK时导致Assets资源文件夹丢失时会出现这样诡异的日志,且手机加载出来的地图会一片白,让人毫无头绪。

5.0.0版本以前的日志表象:

W/System.err: java.io.FileNotFoundException: ap.data 
W/System.err:  at android.content.res.AssetManager.openAsset(Native Method) 
W/System.err:  at android.content.res.AssetManager.open(AssetManager.java:354) 
W/System.err:  at android.content.res.AssetManager.open(AssetManager.java:328) 
W/System.err:  at com.amap.api.mapcore.widgets.WaterMarkerView.<init>(WaterMarkerView.java:93) 
W/System.err:  at com.amap.api.mapcore.widgets.MapOverlayViewGroup.initWidgets(MapOverlayViewGroup. 
W/System.err:  at com.amap.api.mapcore.widgets.MapOverlayViewGroup.<init>(MapOverlayViewGroup.java: 
W/System.err:  at com.amap.api.mapcore.AMapDelegateImp.<init>(AMapDelegateImp.java:265) 
W/System.err:  at com.amap.api.mapcore.AMapGLSurfaceView.<init>(AMapGLSurfaceView.java:26) 
W/System.err:  at com.amap.api.mapcore.AMapGLSurfaceView.<init>(AMapGLSurfaceView.java:0) 
W/System.err:  at com.amap.api.mapcore.MapFragmentDelegateImp.getMap(MapFragmentDelegateImp.java:81 
W/System.err:  at com.amap.api.mapcore.MapFragmentDelegateImp.onCreateView(MapFragmentDelegateImp.j 
W/System.err:  at com.amap.api.maps.MapView.onCreate(MapView.java:147) 
W/System.err:  at com.example.amapsdkv2.MainActivity.onCreate(MainActivity.java:54) 
W/System.err:  at android.app.Activity.performCreate(Activity.java:6459) 
W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2449) 
W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2556) 
W/System.err:  at android.app.ActivityThread.access$1000(ActivityThread.java:165) 
W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err:  at android.os.Looper.loop(Looper.java:179) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5650) 

5.0.0以后的日志表象:

W/System.err: java.io.FileNotFoundException: amap_sdk_shaders/texture_normal.glsl  
W/System.err:  at android.content.res.AssetManager.openAsset(Native Method)  
W/System.err:  at android.content.res.AssetManager.open(AssetManager.java:361)  
W/System.err:  at android.content.res.AssetManager.open(AssetManager.java:335)  
W/System.err:  at com.amap.api.mapcore.tools.AndroidAssets.openFileAsStream(AndroidAssets.java:55)  
W/System.err:  at com.amap.api.mapcore.tools.AndroidAssets.readTextFile(AndroidAssets.java:28)  
W/System.err:  at com.amap.api.mapcore.renderer.GLShader.loadShader(GLShader.java:58)  
W/System.err:  at com.amap.api.mapcore.renderer.GLShader.create(GLShader.java:30)  
W/System.err:  at com.amap.api.mapcore.MapOverlayImageView$Shader.<init>(MapOverlayImageView.java:398)  
W/System.err:  at com.amap.api.mapcore.MapOverlayImageView.initShader(MapOverlayImageView.java:390)  
W/System.err:  at com.amap.api.mapcore.AMapDelegateImp.createSurface(AMapDelegateImp.java:3419)  
W/System.err:  at com.amap.api.mapcore.AMapDelegateImp.createSurface(AMapDelegateImp.java:5776)  
W/System.err:  at com.autonavi.ae.gmap.GLMapRender.onSurfaceCreated(GLMapRender.java:236)  
W/System.err:  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1501)  
W/System.err:  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240) 

这个日志说,找不到ap.data这个文件。ap.data是地图SDK的资源文件,解压地图SDK看一下

就是这个文件夹,为什么会报不见了呢,解压APK看一下,assets目录下是空的'

因为打包的时候SDK的assets文件夹丢了!

为什么会丢呢。 如果在打包的时候,自定义了打包脚本,那么一定要记得复制一下assets目录

一般打包脚本的流程是:

1)解压第三方Jar包 2)复制里面的class文件 3)和自己的代码一起打包

中间漏了一句,应该是:

1)解压第三方Jar包 2)复制里面的class文件 3)复制里面的资源文件(assets)(如果有其他第三方库有资源文件也请复制上) 4)和自己的代码一起打包

这样就可以正常的显示地图了。

示例中心 功能
在线体验
常见问题