问题描述
我有一个 Android 应用程序,它可以根据调试/发布版本与临时服务器和生产服务器进行对话。 这些版本可以通过 3 个不同的密钥(自定义调试、上传密钥或 Play 商店签名密钥)中的任何一个进行签名。
为了处理这种情况,我添加了以下文件,以便在 /.well-kNown/assetlinks.json
上从两台服务器(暂存和生产)提供服务。我尝试使用 chrome 和 postman 使用 content-type = application/json 来拉它。
[{
"relation": ["delegate_permission/common.handle_all_urls"],"target": {
"namespace": "android_app","package_name": "<package_id>","sha256_cert_fingerprints":
["<hashOfKey1>"]
}
},{
"relation": ["delegate_permission/common.handle_all_urls"],"sha256_cert_fingerprints":
["<hashOfKey2>"]
}
},"sha256_cert_fingerprints":
["<hashOfKey3>"]
}
}
]
此外,intent-filter 数据中的主机是使用 manifestPlaceholders(似乎工作正常)指定的,如下所示:
<data
android:host="${hostName}"
android:path="/dashboard/profile/private"
android:scheme="https"
/>
问题 当我构建调试(与登台服务器对话)应用程序时,应用程序可以很好地处理登台 url。但是当我构建发布应用程序时(我尝试通过签署自定义调试密钥和上传密钥),应用程序不处理生产网址。
我无法弄清楚它对生产链接不起作用。
解决方法
在寻找找到确切问题的方法后,我找到了标准工具。
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://
问题是我指定了 example.com
并且内部 assetlinks.json 请求被重定向并由 www.example.com
(我不知道)提供服务。当我使用提到的工具时,它告诉我不允许重定向。