Google Maps API 在模拟器 API 23 上崩溃



我创建了一个带有Google地图活动的新项目。当我尝试在运行API 23(带Google Play APIs(的模拟器上运行它时,它崩溃并显示以下日志:

02-03 09:59:18.475 2566-2566/com.mycompany.mapsdemo E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: com.mycompany.mapsdemo, PID: 2566
                                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mycompany.mapsdemo/com.mycompany.mapsdemo.MapsActivity}: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class fragment
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                      at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                      at android.os.Looper.loop(Looper.java:148)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                                   Caused by: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class fragment
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                                      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393)
                                                                                      at android.app.Activity.setContentView(Activity.java:2166)
                                                                                      at com.mycompany.mapsdemo.MapsActivity.onCreate(MapsActivity.java:21)
                                                                                      at android.app.Activity.performCreate(Activity.java:6237)
                                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                                      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                      at android.os.Looper.loop(Looper.java:148) 
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                                   Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
                                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
                                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                                      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
                                                                                      at android.app.Activity.setContentView(Activity.java:2166) 
                                                                                      at com.mycompany.mapsdemo.MapsActivity.onCreate(MapsActivity.java:21) 
                                                                                      at android.app.Activity.performCreate(Activity.java:6237) 
                                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                                      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                      at android.os.Looper.loop(Looper.java:148) 
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference
                                                                                      at com.google.maps.api.android.lib6.gmm6.m.ad.a(Unknown Source)
                                                                                      at com.google.maps.api.android.lib6.gmm6.c.h.a(Unknown Source)
                                                                                      at com.google.maps.api.android.lib6.gmm6.c.ao.a(Unknown Source)
                                                                                      at com.google.maps.api.android.lib6.e.bd.a(Unknown Source)
                                                                                      at com.google.maps.api.android.lib6.e.ev.a(Unknown Source)
                                                                                      at com.google.maps.api.android.lib6.e.z.a(Unknown Source)
                                                                                      at com.google.maps.api.android.lib6.e.y.a(Unknown Source)
                                                                                      at com.google.android.gms.maps.internal.u.onTransact(SourceFile:107)
                                                                                      at android.os.Binder.transact(Binder.java:387)
                                                                                      at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
                                                                                      at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
                                                                                      at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
                                                                                      at com.google.android.gms.dynamic.zza.zza(Unknown Source)
                                                                                      at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
                                                                                      at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
                                                                                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
                                                                                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)
                                                                                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1226)
                                                                                      at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1328)
                                                                                      at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2284)
                                                                                      at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111)
                                                                                      at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:314)
                                                                                      at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
                                                                                      at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
                                                                                    at android.view.LayoutInflater.

但是当我在模拟器 API 22 和 21 上运行它时,它工作正常。为什么会这样?地图 API 和模拟器 API 23 目前是否存在兼容性问题?

这是否意味着如果我尝试在运行 API 23 的物理设备上运行我的地图项目也会崩溃?我无法访问运行棉花糖的物理设备,因此不幸的是,我无法自己进行测试。我想指出的是,我的SDK工具已更新到最新版本。还有其他人遇到此问题吗?

这是您遇到错误的主要原因。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference

对于 API 23,您需要插入 SD 卡才能运行代码。有关错误的更多详细信息,请参阅问题跟踪器。

使用

 Map  map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map))
                        .getMap();

而不是

           Map    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();

最新更新