使用高德地图sdk显示地图发现在android6.0系统上崩溃,初始化map时报java.lang.NoClassDefFoundError: org.apache.harmony.security.pkcs7.SignedData 异常,而demo运行却没问题,找了很久发现跟腾讯IMsdk冲突,腾讯IM在Application里初始化的,初始化后高德地图就用不了。
解决办法把地图初始化放在腾讯IM前面 :
public static MapView mapView;
public static AMap aMap;
mapView = new MapView(instance);
aMap = mapView.getMap();
// IM腾讯初始化 下面两行代码调用后 在android6.0上使用高德地图闪退,所以获得地图代码放在上面。
TIMManager.getInstance().init(instance, Constants.SDK_APPID, "" + Constants.ACCOUNT_TYPE);
Foreground.init(instance);
//在需要的类中动态的使用地图view
LinearLayout map_ly = (LinearLayout) findViewById(R.id.map_ly);
LayoutParams params = new LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
mapView.setLayoutParams(params);
ViewGroup parent = (ViewGroup) mapView.getParent();
if (parent != null) {
parent.removeAllViews();
map_ly.addView(mapView);
}else {
map_ly.addView(mapView);
}