2017-03-13 2 views
3

Chromecast를 구성하려고 시도했지만 RuntimeException이 발생했으며 이유를 이해하지 않았습니다.RuntimeException (Chromecast)

치명적인 예외 : java.lang.RuntimeException가 : java.lang.RuntimeException가 : 활동 ComponentInfo {... .activity.TVActivityPhone}을 (를) 시작할 수 없습니다 com.google.android 여기 원단의 로그입니다 .gms.dynamite.DynamiteModule $ zza : 원격로드 에 실패했습니다. 로컬 폴백이 없습니다. android.app.ActivityThread.access $ (900) (ActivityThread.java:187)에서 android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2747) 에서 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2677) 에서 android.os.Looper.loop (Looper.java:194)에서 android.os.Handler.dispatchMessage (Handler.java:111) 에서 android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1584) 에서 android.app.ActivityThread.main (ActivityThread.java:5877) at java.lang.reflect.Method.invoke (Method.java) at java.lang.reflect.Method.invoke (Method.java:372) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1020) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:815) java.lang.RuntimeException : com.google.android.gms.dynamite.DynamiteModule $ zza : 리모트로드 에 오류가 발생했습니다. 로컬 폴백이 없습니다. 여기

protected void configureCast() { 
     mCastContext = CastContext.getSharedInstance(this); // here I've got RuntimeException 
     if(mCastContext != null) mCastSession = mCastContext.getSessionManager().getCurrentCastSession(); 
     mSessionManagerListener = new CastSessionManagerListener(this); 
     mSessionManagerListener.setCastConnectionListener(mCastConnectionListener); 
    } 

build.gradle입니다 :

그리고 여기 내 코드입니다

compile 'com.google.android.gms:play-services-gcm:10.2.0' 
    compile 'com.google.android.gms:play-services-analytics:10.2.0' 
    compile 'com.google.android.gms:play-services-location:10.2.0' 
    compile 'com.google.android.gms:play-services-cast-framework:10.2.0' 

어떤 도움?

+0

것은 당신이 당신의 매니페스트 파일에 제대로 활동을 초기화 있는지 확인하십시오

그리고 여기에는 스택 트레이스입니다. 이 [thread] (http://stackoverflow.com/questions/16584049/android-fatal-exception-main-java-lang-runtimeexception-unable-to-start-activi)에서 오류의 가능한 원인을 확인할 수 있습니다. 또한, 아마도 당신은 메모리 문제를 일으키는 큰 이미지를 사용하고 있습니다. 지정된 [여기] (http://stackoverflow.com/questions/28525268/fatal-exception-main-java-lang-runtimeexception-unable-to-start-activity-a-lot)로 이미지의 크기를 줄여야합니다. – abielita

+1

이 문제가 계속 발생합니까? v26.x – user1026605

+0

@ user1026605로 compat 라이브러리를 업데이트 한 후에도 동일한 문제가 발생하기 시작 했는데도 여전히이 문제가 발생합니까? – Sabrish

답변

5

우선, Why I get this error when on google map "Failed to load DynamiteLoader: java.lang.ClassNotFoundException: Didn't find class?에 설명 된 것과 같은 잘못된 프로젝트 구성과 관련이 없습니다.


어느 날 나는 스파이크를 얻었다 (~ 1 일 1300 충돌) com.google.android.gms.dynamite.DynamiteModule$zza: Remote load failed. No local fallback, com.google.android.gms.dynamite.DynamiteModule$zzc: No acceptable module found. Local version is 0 and remote version is 0 예외 패브릭에서 충돌한다.

첫 번째 모습에서 내가 그 기간 동안 응용 프로그램의 업데이트를 제공하지 않았기 때문에 그것이 발생한 이유가 분명하지 않았습니다. 자세히 조사한 결과 (전체 며칠 동안) 나는이 문제가 Google Play 서비스 버전과 구형 Google Cast SDK 간의 호환성이 깨졌기 때문에 이 발견되었습니다.

내 Android 애플리케이션에서 Google Cast SDK의 10.2.4 버전을 사용했으며이 버전은 일부 Google Play 서비스 버전과 호환되지 않습니다. Google Play 서비스의 11.3.02 (480-161239932) 버전이 10.2.4 Google Cast SDK와 호환되지 않는 것으로 나타났습니다. Google Play SDK 라이브러리와 호환되지 않는 다른 버전의 Google Play 서비스가 있습니다 (단, 하나만 발견 했으므로 테스트 및 추가 수정으로 충분했습니다).

기기에 Google Play 서비스 11.3.02 (480-161239932) 버전이 설치되어 있으면 애플리케이션이 시작될 때 즉시 충돌이 발생했습니다. 주목할만한 점은, 내 장치에서 다른 응용 프로그램을 찾았습니다. 시작시 즉시 충돌하고 스택 추적이 동일했습니다..

수정 나를 위해 간단 충돌에 대한

수정 - 나는 구글이 특정 play-services-cast-framework, play-services-ads, firebase-core, firebase-messaging에 11.4.2, 에 10.2.4에서 Play 서비스를 업데이트했다.


패브릭 역사 스파이크 :

  • 9 월 25의 (~ 400 개 충돌), 제 스파이크
  • 9 월 27의 (-200 충돌)
  • 9 월 29의 (~ 140 개 충돌)
  • 10 월 8 일 (~ 1300 년 충돌)

10 월 8 일 이후 그다지 중요하지 않았고 (하루 10-20 회 충돌) 더 이상의 스파이크는 관찰되지 않았습니다. 즉, 사용자가 Google Play 서비스를 업데이트하고 애플리케이션이 시작될 때 더 이상 오류가 발생하지 않았습니다.

일단 Google Play 서비스 버전을 업데이트하고 사용자가 새 버전의 애플리케이션으로 업데이트하면 충돌이 사라졌습니다 (하루에 1-2 회 크래시). 이 충돌이 아시다시피, 구글은 서비스가 자동으로 백그라운드에서 업데이트되는 플레이

를 발생 이유

설명. 즉, 언젠가 사용자는 응용 프로그램 및 응용 프로그램에 사용 된 Google Cast SDK와 호환되지 않는 Google Play 서비스의 업데이트를받을 수 있으며 응용 프로그램이 중단됩니다 (100 %).

내 경험에 비추어 볼 때 Google Cast SDK에서 발생하지만 다른 라이브러리 (교정본 없음)의 경우 일 수 있습니다.

Google Cast SDK의 메소드를 호출 할 때 응용 프로그램이 충돌합니다. Google Cast SDK에 의존하는 애플리케이션의 다른 위치에 댓글을 달았으며 애플리케이션이 항상 충돌했습니다. 누군가가이 충돌을 모방하는 방법을 궁금해하는 경우

자세한 가이드는

, 여기에 상세한 가이드입니다.

  • 먼저 Google Play 서비스의 기존 버전을 제거해야합니다. 'Google Play 서비스'애플리케이션 정보 화면에서 확인할 수 있습니다. downgrade of google play services
  • Android 기기에 Google Play 서비스 (apkmirror link) 11.3.02 (480-161239932) 버전을 설치합니다. 구글 캐스트 SDK에 액세스

    adb install -r com.google.android.gms_11.3.02_(480-161239932)-11302480_minAPI23(x86,x86_64)(nodpi)_apkmirror.com.apk

  • 열기 응용 프로그램과 관찰자 응용 프로그램 충돌.

    충돌의


2 도착 나는 Google Play 서비스를 업데이트하여 충돌을 해결 한 것으로 생각했지만 몇 주 침묵 후 나는 통지있어이 같은 스택 트레이스와 충돌 재 포장.

몇 가지 조사가 끝나고 (며칠 전) 문제를 재현 할 수있었습니다. 그리고 슬픈 소식이 있습니다 - 나는이 충돌에 관해서는 아무것도 할 수 없습니다 : sad_face : 아니면 적어도 아직 우아한 해결책을 찾지 못했습니다.

좋은 소식은 재 포장 된 크래시 모양이 매우 드뭅니다 (한 달에 1-2 회 충돌).

Google Play 서비스가 자동 업데이트 또는 강제 제거 (가능성 낮음)하면 실행중인 애플리케이션이 Play 서비스 업데이트를 적용하지 않도록합니다. 이는 제어 할 수없는 프로세스입니다. 즉, Android OS는 언제든지 Google Play 서비스를 자동으로 설치할 수 있습니다. 사용자가 응용 프로그램을 열었고 어느 ​​시점에서 Google Play 서비스 설치가 완료되면 응용 프로그램이 시스템에 의해 종료되고 사용자가 다시 열어야합니다. 응용 프로그램이 시스템에 의해 종료 될 때 우리는 첫 번째 경우와 마찬가지로 충돌에 대한 동일한 스택 추적을 로그에서 볼 수 있습니다. 몇 번만 재생산하고 나에게 일어난 일이 어렵습니다. 하지만 Google Play 서비스가 업데이트를 자주받는 경우가 더 많습니다.

"기기에서 Google Play 서비스 업데이트를 삭제합니다"이 충돌을 재현하는 방법이 있습니다 (실제로는 그렇지 않습니다). 동일한 스택 추적을 생성합니다.

기본적으로 Google Play 서비스 업데이트를 신속하게 제거해야하며 (즉, 정말 빠름) 애플리케이션을 신속하게 열어야합니다. 성공하면 시작시 Google Play 서비스가 제거되고 시스템이 애플리케이션을 종료하므로 애플리케이션이 시스템에 의해 종료됩니다.

FATAL EXCEPTION: main 
Process: XXX, PID: 26149 
java.lang.RuntimeException: Unable to start activity ComponentInfo{XXX/XXX.SomeActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2733) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2819) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6321) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment 
Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class fragment 
Caused by: java.lang.RuntimeException: com.google.android.gms.dynamite.DynamiteModule$zzc: No acceptable module found. Local version is 0 and remote version is 0. 
    at com.google.android.gms.internal.zzavl.zzbp(Unknown Source) 
    at com.google.android.gms.internal.zzavl.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:2343) 
    at android.support.v4.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManager.java:1645) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1390) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1640) 
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1896) 
    at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3673) 
    at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111) 
    at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:331) 
    at android.support.v4.app.BaseFragmentActivityApi14.onCreateView(BaseFragmentActivityApi14.java:39) 
    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:65) 
    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.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:287) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
    at XXX.SomeActivity.setContentView(SomeActivity:XXX) 
    at XXX.SomeActivity.onCreate(SomeActivity:XXX) 
    at android.app.Activity.performCreate(Activity.java:6760) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)