现在是2015年7月18日。一次性完全按照百度地图API官方网站的开发指南去做,运行程序时会出错,进不了主界面。(解决方法在后面的黑体字中,可直接跳过分析过程)
Eclipse报错:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.map/com.example.map.MainActivity}:
The following classes could not be instantiated:- com.baidu.mapapi.map.MapView (Open Class, Show Error Log)
Android Studio则没有详细的说哪里错。
我使用的是Android Studio。先定位错误,按开发指南一步步来。每添加一段代码,进行一次调试。最终定位到SDKInitializer.initialize(getApplicationContext());这一句有问题。查看SDKInitializer的内容:
看不懂关于Context的代码,这时想到百度地图的示例代码。
将下载的示例代码导入Android Studio,看到目录结构如下:
发现问题出现在哪了。原来jniLibs不是直接放*.so文件,而是要把百度给的几个文件夹都复制进来。也就是说:
1. 如果是用Eclipse,则把从百度地图API官网下载下来的文件解压后,将so目录里的所有文件夹全都放到libs\里面(亲测有效)
2. 如果是用Android Studio,则把so目录里的所有文件夹全都放到src/main/jniLibs目录中(亲测有效)
jniLibs里的文件夹分别对应不同的CPU类型。如果没有全部导入,又碰到不支持的CPU,运行的时候就会出现错误。so文件需要放在以CPU类型为文件夹名的文件夹中。直接将so文件放入jniLibs还是会出现错误。
看看百度的开发指南是怎么写的:
第一张,只导入了一个文件夹。
第二张……压根就没给图。
所以说,百度地图的教程不适合初学者么?