googlecast / CastVideos-android

Reference Android Sender w/ Framework API: CastVideos-android application shows how to cast videos from an Android device that is fully compliant with the Cast Design Checklist.
Apache License 2.0
343 stars 181 forks source link

Backwards compatibility of the v3 mini controller: Error inflating class fragment #11

Closed sebmarste closed 8 years ago

sebmarste commented 8 years ago

The minSdkVersion is 10. When trying to run the App on an API 16 Emulator Instance (Android 4.1 x86) the App crashes immediately and i get this error:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.sample.cast.refplayer/com.google.sample.cast.refplayer.VideoBrowserActivity}: android.view.InflateException: Binary XML file line #41: Error inflating class fragment
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
                  at android.app.ActivityThread.access$600(ActivityThread.java:130)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
                  at android.os.Handler.dispatchMessage(Handler.java:99)
                  at android.os.Looper.loop(Looper.java:137)
                  at android.app.ActivityThread.main(ActivityThread.java:4745)
                  at java.lang.reflect.Method.invokeNative(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:511)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                  at dalvik.system.NativeStart.main(Native Method)
               Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class fragment
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                  at com.google.sample.cast.refplayer.VideoBrowserActivity.onCreate(VideoBrowserActivity.java:111)
                  at android.app.Activity.performCreate(Activity.java:5008)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                  at android.os.Handler.dispatchMessage(Handler.java:99) 
                  at android.os.Looper.loop(Looper.java:137) 
                  at android.app.ActivityThread.main(ActivityThread.java:4745) 
                  at java.lang.reflect.Method.invokeNative(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:511) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                  at dalvik.system.NativeStart.main(Native Method) 
               Caused by: java.lang.RuntimeException: com.google.android.gms.internal.zzsb$zza: No acceptable module found. Local version is 0 and remote version is 0.
                  at com.google.android.gms.internal.zzni.zzbg(Unknown Source)
                  at com.google.android.gms.internal.zzni.zza(Unknown Source)
                  at com.google.android.gms.cast.framework.CastContext.<init>(Unknown Source)
                  at com.google.android.gms.cast.framework.CastContext.getSharedInstance(Unknown Source)
                  at com.google.android.gms.cast.framework.media.uicontroller.UIMediaController.<init>(Unknown Source)
                  at com.google.android.gms.cast.framework.media.widget.MiniControllerFragment.onCreateView(Unknown Source)
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1264)
                  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1366)
                  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2409)
                  at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
                  at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:374)
                  at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:33)
                  at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                  at com.google.sample.cast.refplayer.VideoBrowserActivity.onCreate(VideoBrowserActivity.java:111) 
                  at android.app.Activity.performCreate(Activity.java:5008) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                  at android.os.Handler.dispatchMessage(Handler.java:99) 
                  at android.os.Looper.loop(Looper.java:137) 
                  at android.app.ActivityThread.main(ActivityThread.java:4745) 
                  at java.lang.reflect.Method.invokeNative(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:511) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                  at dalvik.system.NativeStart.main(Native Method) 
               Caused by: com.google.android.gms.internal.zzsb$zza: No acceptable module found. Local version is 0 and remote version is 0.
                  at com.google.android.gms.internal.zzsb.zza(Unknown Source)
                  at com.google.android.gms.internal.zzni.zzbg(Unknown Source) 
                  at com.google.android.gms.internal.zzni.zza(Unknown Source) 
                  at com.google.android.gms.cast.framework.CastContext.<init>(Unknown Source) 
                  at com.google.android.gms.cast.framework.CastContext.getSharedInstance(Unknown Source) 
                  at com.google.android.gms.cast.framework.media.uicontroller.UIMediaController.<init>(Unknown Source) 
                  at com.google.android.gms.cast.framework.media.widget.MiniControllerFragment.onCreateView(Unknown Source) 
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1264) 
                  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1366) 
                  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2409) 
                  at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120) 
                  at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:374) 
                  at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:33) 
                  at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                  at com.google.sample.cast.refplayer.VideoBrowserActivity.onCreate(VideoBrowserActivity.java:111) 
                  at android.app.Activity.performCreate(Activity.java:5008) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                  at android.os.Handler.dispatchMessage(Handler.java:99) 
                  at android.os.Looper.loop(Looper.java:137) 
                  at android.app.ActivityThread.main(ActivityThread.java:4745) 
                  at java.lang.reflect.Method.invokeNative(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:511) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                  at dalvik.system.NativeStart.main(Native Method) 

It acts as could the AppCompatActivity not inflate the MiniController Fragment, which is provided by the Cast v3 Framework.

Is this a problem of the Cast Framework or some kind of false configured emulator?

The same happens on my own App, where i added the Mini Controller Fragment to an AppCompatActivity as well. On API 23 both Apps work perfectly.

Thanks

NoRulesJustFeels commented 8 years ago

It is very likely the Play Store is missing and you don't have the latest Google Play services installed. Have you tried an actual JellyBean device with the latest Google Play services?

sebmarste commented 8 years ago

Thanks a lot. I flashed an old rom on my phone and when the Play Services were installed and updated everything worked.

j-garin commented 8 years ago

Hi. I have the same issue on emulators and real device. Device API level 22 (android 5.1.1), emulator API level 23, 24 (android 6.0, 7.0) Play services installed on add devices. Version: 9.6.83 Cast SDK version: com.google.android.gms:play-services-cast-framework:9.4.0 Please give me hints on where to look for solution. Thank you.

NoRulesJustFeels commented 8 years ago

For the emulators, make sure you have the Google API's version. Otherwise you need to have a real device with the latest Google Play services installed.

j-garin commented 8 years ago

I have checked the emulators and devices for Google Play Services and I confirm that all of them have Play Services version 9.6.83 installed. Still having this issue.

j-garin commented 8 years ago

Update: my logs ` Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #17: Error inflating class fragment Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentHostCallback.getContext()' on a null object reference at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2379) at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120) at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:376) at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:33) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:994) at android.view.LayoutInflater.rInflate(LayoutInflater.java:854) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:994) at android.view.LayoutInflater.rInflate(LayoutInflater.java:854) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.cloudify.Activities.ActivityMain.onCreate(ActivityMain.java:153) at android.app.Activity.performCreate(Activity.java:6664) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

`

NoRulesJustFeels commented 8 years ago

This doesn't appear to be related to the Cast SDK. You should search online for what reasons might cause your issue.

j-garin commented 8 years ago

Update: this is what happens when I attempt to inflate the fragment from code. There is clearly something wrong with MiniController. My code:

getSupportFragmentManager().beginTransaction().replace(R.id.mini_controller_container, new MiniControllerFragment()).commit();

My logs: java.lang.NullPointerException: Attempt to read from null array 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: java.lang.NullPointerException: Attempt to read from null array at com.google.android.gms.cast.framework.media.widget.MiniControllerFragment.zza(Unknown Source) at com.google.android.gms.cast.framework.media.widget.MiniControllerFragment.onCreateView(Unknown Source) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:604) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)

NoRulesJustFeels commented 8 years ago

File a bug against the Cast SDK and provide a complete log: https://code.google.com/p/google-cast-sdk/issues/list