我注意到我的设备和托管在https://example.com/.well-known/assetlinks.json的 DAL 之间的缓存机制的影响,我希望了解它是如何工作的,以及是否可以绕过它.
问题是我正在对 DAL 的更改进行原型设计(特别是添加另一个应用程序,但出于问题的目的,更改在这里应该是无关紧要的),并且从应用程序的角度来看,更改是不可见的。例子:
- 我从这个 DAL 开始:
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"sha256_cert_fingerprints": [
"<redacted>"
],
"namespace": "android_app",
"package_name": "com.my_app"
}
}
]
我安装
com.my_app
,验证成功。我将 DAL 编辑为以下内容(注意添加了第二个应用程序条目):
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"sha256_cert_fingerprints": [
"<redacted>"
],
"namespace": "android_app",
"package_name": "com.my_app"
}
},
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"sha256_cert_fingerprints": [
"<redacted>"
],
"namespace": "android_app",
"package_name": "com.my_other_app"
}
}
]
- 我安装
com.my_other_app
,验证失败。 - 等待24小时,重新安装
com.my_other_app
,验证成功。
使用Google的Statement List Tester可以观察到相同的情况;它将继续反映早期 DAL 的规范,最长可达 24 小时(因此问题不限于特定设备/它不是可以清除的设备上缓存层)。
这让我相信 Google 拥有 Statement List Tester 和 Android 设备都使用的 DAL 缓存。由于我正在对更改进行原型设计以了解 DAL 的未记录行为,因此必须等待任意且长时间的时间会适得其反。
我的问题是:缓存持续时间是否已知,是否可以绕过、重置?