Google Play服务5.0.77

从6月25日起,两个使用广告的不相关的应用程序开始拥有这个NPE

java.lang.NullPointerException at zo.a(SourceFile:172) at aeh.a(SourceFile:120) at afw.run(SourceFile:14) at afy.run(SourceFile:30) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) 

我认为这是有关谷歌播放服务更新。 有人能帮我解决这个问题吗?

只是为了确认问题与播放服务有关,我已经设法从一个名为AdWorker的主题中得知这个问题:

 thread at java.lang.Object.wait(Object.java) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:813) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:973) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1282) at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:207) at zo.a(SourceFile:147) at zo.a(SourceFile:170) at aeh.a(SourceFile:120) at afw.run(SourceFile:14) at afy.run(SourceFile:30) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) 

这是不正确的地方…但是没有地方在哪里举报

7月1日的例外数量是现在的6倍,几乎是6月27日的3倍。

在Android的谷歌代码项目问题

讨论现在在admob google标题组的这个线程中

Google的最新回复“我们知道这些崩溃,正在修复,我们希望在接下来的一两周内推出这些修补程序。” (七月七日)

通过https://groups.google.com/forum/#!topic/google-admob-ads-sdk/DkjtCx_Zvn8find了Mateusz Matela的解决scheme。

我试过了摩托罗拉的DEFY +,这个bug从三次中两次都崩溃了。 即使在日志中出现与此错误相关的警告时,它也可以正常工作。 它甚至会说“AdWorker线程抛出exception”。 我的广告甚至重新出现在继续使用应用程序。

 final UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { if (thread.getName().startsWith("AdWorker")) { Log.w("ADMOB", "AdWorker thread thrown an exception.", ex); } else if (defaultHandler != null) { defaultHandler.uncaughtException(thread, ex); } else { throw new RuntimeException("No default uncaught exception handler.", ex); } } }); 

今天,谷歌发布这个: http : //android-developers.blogspot.fr/2014/07/google-play-services-5.html

现在它适用于我。 只需再次尝试更新您手机中的GooglePlayService并更新您的ADT即可。

编辑:

检查GPS版本的代码:

 // Check if GooglePlay Service is good; resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this.getActivity()); if (resultCode != ConnectionResult.SUCCESS) { if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) { GooglePlayServicesUtil.getErrorDialog(resultCode, this.getActivity(), 1).show(); rootView = inflater.inflate(R.layout.fragment_googleplayerror, container, false); return rootView; } else { Log.i(Tag, "This device is not supported."); getActivity().finish(); } } 

更新admob到谷歌播放服务后,我得到了不同的Android版本完全相同的错误。 我认为这不能在用户方面解决。

它与Play服务更新有关,请参阅下面的示例崩溃日志。 由于它崩溃onCreate它可能发生在用户点击广告或特定types的广告

 USER_COMMENT= ANDROID_VERSION=4.1.2 APP_VERSION_NAME=8.9 BRAND=samsung PHONE_MODEL=GT-I9100 CUSTOM_DATA= STACK_TRACE=java.lang.RuntimeException: Unable to start activity ComponentInfo{xxxxx/com.google.android.gms.ads.AdActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) at android.app.ActivityThread.access$700(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4921) 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:1027) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at acm.a(SourceFile:215) at acz.onTransact(SourceFile:58) at android.os.Binder.transact(Binder.java:326) at com.google.android.gms.internal.ck$a$a.onCreate(Unknown Source) at com.google.android.gms.ads.AdActivity.onCreate(Unknown Source) at android.app.Activity.performCreate(Activity.java:5206) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) ... 11 more java.lang.NullPointerException at acm.a(SourceFile:215) at acz.onTransact(SourceFile:58) at android.os.Binder.transact(Binder.java:326) at com.google.android.gms.internal.ck$a$a.onCreate(Unknown Source) at com.google.android.gms.ads.AdActivity.onCreate(Unknown Source) at android.app.Activity.performCreate(Activity.java:5206) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) at android.app.ActivityThread.access$700(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4921) 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:1027) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) at dalvik.system.NativeStart.main(Native Method) 

自6月25日以来,我也看到了与我的应用程序完全相同的问题。 你是对的,这是一个谷歌问题,我想我已经设法通过更新我的Android支持库到版本20(我使用android-support-v4.jar)和我的Google Play服务到版本17来解决它。

我不确定这两个版本中的哪一个能解决这个问题,但已经过了24小时,Crash报告已经停止。

编辑:对不起,这仍然没有解决。 但是我收到了AdMod SDK团队的回复,他们正在调查。 https://groups.google.com/forum/#!topic/google-admob-ads-sdk/DkjtCx_Zvn8

这是一个部分的解决scheme,似乎(到目前为止)解决100%的崩溃:你应该推迟广告请求几毫秒,以避免这种崩溃!

简单的例子:

  Handler handler = new Handler() { @Override public void handleMessage(Message msg) { AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); super.handleMessage(msg); } }; if (handler != null) { handler.sendEmptyMessageDelayed(0, 200); } 

我发现了一个解决方法。

在我的情况下,我是在自定义stream程中运行的服务中显示广告。 例如:

  <service android:name="com.example.MyService" android:exported="false" android:process=":svc" /> 

在我的AndroidManifest.xml中,我为声明的AdActivity设置了相同的android:process属性,问题就消失了。

  <activity android:name="com.google.android.gms.ads.AdActivity" android:process=":svc" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" /> 

就我的申请而言,我并不特别在乎广告活动运行的过程,所以这种解决方法已经足够了。 希望这会对别人有用。

我find了临时的半解决scheme。 上面的广告请求使用了thiagolrbuild议:

  Handler handler = new Handler() { @Override public void handleMessage(Message msg) { AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); super.handleMessage(msg); } }; if (handler != null) { handler.sendEmptyMessageDelayed(0, 200); } 

此外,我删除onResume和onPause方法,所以我不知道哪个解决scheme可以帮助我,但是这个解决方法之前,我每天在zo.a(SourceFile:172)有100-130 java.lang.NullPointerException。 在这个解决方法之后,我每天有6-10个NullPointerExceptionexception。 如果你想要,你可以尝试这个解决scheme分开来定义其中哪些帮助。

我在活动中删除的方法:

 // @Override // public void onPause() { // adView.pause(); // super.onPause(); // } // // @Override // public void onResume() { // super.onResume(); // adView.resume(); // } 

根据: https : //groups.google.com/forum/#!topic/google-admob-ads-sdk/DkjtCx_Zvn8

一些已经通过在清单中向活动android:name =“com.google.android.gms.ads.AdActivity”添加android:theme =“@ android:style / Theme.Translucent”而获得了成功。

我现在正在推出一个新的版本。 如果有帮助,会在几天后看到。

转到使用其他广告sdk。 我尝试了大部分提到的事情,错误依然存在。 而且我个人讨厌在代码中使用这样的黑客。 所以决定切换,而不是使用谷歌广告与崩溃和错误的SDK。