因为this bug,我的团队决定根本不使用地理围栏。Android中的地理围栏是可用的还是不可用的?
在所有内部测试设备上,调试和发布版本都运行得很好。但是,对于某些用户,我们得到的崩溃报告表明API存在问题:
致命异常: java.lang.SecurityException:软件包的无效API键=在android.os.Parcel.readException(Parcel.java:1620)在android.os.Parcel.readException(Parcel.java:1573)收到的de.stocard.stocard代码= -1在com.google.android.gms.common.internal.zzd.zzqz(Unknown源)在com.google )com.google.android.gms.internal.zzpw$zzf.run(Unknown源的.android.gms.internal.zzpw$zzc.zzapl(未知源)在java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
这发生在从4.4.2到7.0的Android版本上,没有明显的模式。这同样适用于设备型号和制造商:许多制造商和型号。
这听起来像是一个相当严重的海森虫。
更新:
在Android中,似乎有两种不同的方法来做地理围栏:
我们需要使用感知API来获得我们想要的功能和电池友好性。
备注:
我看到一个势均力敌的投票是由于“主要基于意见”。所以,让我说清楚,我不想要没有支持的意见答案。我想要的是事实,参考资料,或者特定的专业知识。我让做了一些研究,和引用了,这是一个随机的崩溃错误,没有可靠的解决方法。我希望其他人注意到,他们已经成功地实现了地理围栏,并且具有以下两种情况之一:
Invalid API Key for package
)发布于 2017-04-04 11:41:43
你链接的bug已经包含了所有的信息,不是吗?
在我们的检查中有一个错误,当有一个网络错误需要验证时,它有时会抛出这个SecurityException。该修复将在下一版本的Google Play服务中推出。
目前,最好的解决方法是在调用GoogleApiClient.connect()的线程上设置一个UncaughtExceptionHandler。对于大多数人来说,这是在主线程上,您可以通过Looper.myLooper().getThread()获得主线程。
更新
好吧,要回答你的问题“地理围栏在Android中是完全不可用的吗?”,我会说不,它不是“完全”不可用的,但显然包含一些问题。
你应该因为这些bug而根本不使用地理围栏吗?我猜这在很大程度上取决于用例,而且确实是一个基于意见的问题。就像移动设备一样,你永远不能100%确定某件事是否有效。你的手机可能没有信号,即使代码中没有bug,它也可能因为各种原因而得不到关于某个位置的通知。在手机上,这一切都是关于你如何处理错误的。
我会实现你想要实现的任何东西,尝试按照错误标签( UncaughtExceptionHandler)中的建议来捕捉错误,并在应用程序中实现分析/崩溃报告,这样你至少可以获得关于这种情况在现场实际发生的频率的信息。
让你的用户明白,由于底层系统的原因,你的应用程序的geofence功能不能100%保证在任何时候都能工作,我认为他们仍然会很高兴拥有这个功能。在你的应用程序或主页上可能会有一些常见问题解答,这些问题都是关于已知问题的。希望这能帮助你做出决定
https://stackoverflow.com/questions/42077904
复制相似问题