Android Firestore orderBy with whererrayContains在emulator中显示结果,但不在设备上显示

Android Firestore orderBy with whererrayContains在emulator中显示结果,但不在设备上显示,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我在Android(java)上遇到过这样一种情况:我的firestore查询在模拟器上工作,但在设备上不工作。如果我删除whererraycontains子句或orderBy子句,它将在设备上重新开始工作。奇怪的是,在关闭这些选项中的任何一个并重新运行解决方案后,它将从该点开始工作(直到完全停止/app卸载并重新运行) 我在firebase控制台中看不到任何有用的东西,我也使用了setPersistenceEnabled设置,但这并不能解决问题 我的firestore查询: Query que

我在Android(java)上遇到过这样一种情况:我的firestore查询在模拟器上工作,但在设备上不工作。如果我删除whererraycontains子句或orderBy子句,它将在设备上重新开始工作。奇怪的是,在关闭这些选项中的任何一个并重新运行解决方案后,它将从该点开始工作(直到完全停止/app卸载并重新运行)

我在firebase控制台中看不到任何有用的东西,我也使用了setPersistenceEnabled设置,但这并不能解决问题

我的firestore查询:

Query query = mFirestore.collection("calls");
        query = query.orderBy("date", Query.Direction.DESCENDING).whereArrayContains("driver",uid).limit(20);
我的firestore数据库:

Firebase日志(如果有帮助):

2021-04-21 17:03:56.135 1812-2182/?D/WIFI感知工厂:获取请求网络请求[TRACK\u DEFAULT id=2363,[功能:INTERNET&非限制和受信任的Uid:10361管理员Uid:[]请求者Uid:10361请求者PACKAGENAME:com.google.firebase.example.fireets]]分数为60,提供者id为5
2021-04-21 17:03:56.336 1812-2182/? D/WIFI\u-AWARE\u-FACTORY:get-request-NetworkRequest[TRACK\u-DEFAULT-id=2364,[Capabilities:INTERNET&NOT\u-RESTRICTED&TRUSTED-Uid:10361-AdministratorUids:[]RequestorUid:10361-RequestorPackageName:com.google.firebase.example.fireets]]分数为60,providerId为5的结果证明我需要firestore中的索引才能进行此查询。为什么它在模拟器中工作而在设备上失败仍然是个谜

见:

在将querysnapshot结果写入日志之后,我终于看到了索引错误和创建索引的链接,这在FS文档中也提到过,该文档还指出这应该显示在firebase控制台中,但对我来说,它没有

执行此操作会导致查询错误:

QuerySnapshot result = query.get().getResult();
Log.w("result:", result.toString());
也张贴在