我开发了一款用于远程控制某些特殊硬件设备的Android应用。通过udp和wifi完成通信。该应用程序已在~60k设备上运行,没有任何问题,但自Android 6推出以来,我收到越来越多来自用户的报告,这些用户遇到了一些奇怪的错误:
通常,应用程序会使用广播包搜索硬件。然后,应用程序请求来自硬件的所有数据保持同步(两个方向都有~4000个包)。这个同步过程经过严格测试,可以满足所有无线条件,并且可以按预期工作(也适用于Android 6)。
使用三星设备和Android 6的用户现在遇到问题,即同步无法完成(20秒内没有来自硬件的回复)。奇怪的是广播搜索确实工作得很好,以及同步的开始。通常,当完成5-15%的同步时会发生超时。
由于我不知道是什么原因造成这个问题,我想问一下三星/安卓6和udp通过wifi通讯是否有任何已知问题? Android 6中的网络堆栈是否有任何其他更改可能导致此问题?在我的测试设备上(主要是HTC)一切运行正常,所以我目前没有想法。
编辑: 我将问题缩小到以下设备:
编辑2: 我有三星Galaxy 6设备用于测试目的,当然它对我有用。我还尝试了各种网络设置,省电,防病毒和一般设置组合,但它只是一直在工作。
编辑3: 在获得一些Galaxy S5和S6测试设备后,我无法重现这个问题。比较ROM版本我发现这些设备都比获得问题的设备有更新的rom。 事实证明,三星只是破坏了他们的wifi堆栈中的东西,导致wifi在一些udp包之后停止正常工作。所以只有这个问题的解决方法就是等待并希望他们很快就能在所有国家修复它。