2016-02-03 78 views
0

我使用Google地圖活動創建了一個新項目。當我嘗試在模擬器上運行的API 23(W /谷歌播放API)來運行它,它崩潰,並顯示以下日誌:谷歌地圖API在仿真器API 23上崩潰?

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上運行它,它工作正常。這是爲什麼?目前是否存在與Maps API和模擬器API 23的兼容性問題?

這也意味着如果我嘗試在運行API 23的物理設備上運行它,我的地圖項目也會崩潰?我無法訪問運行棉花糖的物理設備,因此我不能自行測試自己。我想指出我的SDK工具已更新到最新版本。任何人都會遇到這個問題?

回答

0

這是您遇到錯誤的主要原因。

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

對於API 23,您需要插入一個SD卡以便代碼運行。有關錯誤的更多詳細信息,請參閱issues tracker

+0

我明白了..是的,我可以證實它確實是關係到SD卡。作爲臨時修復,我重新創建並重新配置了我的AVD,就像項目經理在您分享的鏈接中所建議的一樣。現在它可以正常工作,但我會密切關注您在修復發佈時分享的更新鏈接。謝謝! – aresz

0

使用

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

而不是

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