无需登录 数据私有 本地保存

Trusted Web Activity 辅助工具 - 验证数字资产链接

15
0
0
0

TWA 数字资产链接验证工具

生成 & 验证 Trusted Web Activity 的 assetlinks.json 文件

配置信息
不含协议,例如:example.com
例如:com.example.myapp
SHA256
支持带冒号或不带冒号的格式,工具会自动规范化。若使用 Play App Signing,请填入 Play Console 中的签名指纹。
TWA 应用通常选择 handle_all_urls
JSON 预览
等待生成...
验证 assetlinks.json
验证结果
请先输入内容或URL进行验证
重要提示
  • 文件必须通过 HTTPS 访问,不能有重定向
  • 必须放置在 /.well-known/assetlinks.json 路径下
  • 服务器需返回 Content-Type: application/json
  • 若使用 Google Play App Signing,需使用 Play Console 中的签名指纹,而非本地密钥指纹
  • 更改后可能需要等待 Google 的缓存刷新(通常数小时内生效)

常见问题

什么是 Trusted Web Activity(TWA)?
Trusted Web Activity 是一种将 Web 内容(PWA)集成到 Android 应用中的方式,由 Chrome 浏览器引擎驱动。它允许开发者使用自己的 Android 应用包来包装网站,并在 Google Play 上分发。与 WebView 不同,TWA 与浏览器共享存储和 Cookie,提供更原生的体验。数字资产链接(Digital Asset Links)验证是 TWA 的核心安全机制,确保只有网站所有者才能将网站与应用关联。
assetlinks.json 应该放在哪里?
文件必须放置在网站的 /.well-known/assetlinks.json 路径下(相对于域名根目录)。完整URL示例:https://example.com/.well-known/assetlinks.json。该路径是 Google Digital Asset Links 协议规定的标准位置,不能自定义。文件必须通过 HTTPS 直接访问,不能有任何 HTTP 重定向(包括 www 重定向、HTTPS 强制跳转等)。如果使用 Cloudflare 或其他 CDN,确保该路径不被缓存或重定向。
如何获取 SHA256 证书指纹?
方法一:使用 keytool 命令
keytool -list -v -keystore your-keystore.jks -alias your-alias
输出中查找 SHA256 指纹(32组冒号分隔的十六进制字符)。

方法二:从 Google Play Console 获取
进入 Play Console → 选择应用 → 设置 → 应用签名 → 找到 SHA-256 证书指纹。如果启用了 Play App Signing,必须使用 Play Console 显示的签名指纹,而非本地上传密钥的指纹。

方法三:使用 apksigner
apksigner verify --print-certs your-app.apk
为什么 TWA 验证一直失败?
常见原因包括:
1. 指纹不匹配:检查是否使用了 Play Console 的签名指纹(而非上传密钥指纹)
2. HTTPS 问题:确保网站使用有效的 HTTPS 证书,无重定向
3. 文件路径错误:确认文件在 /.well-known/assetlinks.json 可访问
4. Content-Type 不正确:服务器必须返回 application/json
5. 缓存延迟:Google 的验证服务器有缓存,更改后可能需要等待数小时
6. 包名不匹配:确认 package_name 与 AndroidManifest.xml 中的完全一致
建议使用 Google 官方验证工具 进行诊断。
assetlinks.json 支持多个应用或多种关系吗?
是的。assetlinks.json 是一个数组,可以包含多个对象。每个对象可以声明不同的关系(relation)和目标(target)。例如,你可以为同一个网站关联多个 Android 应用,或者为一个应用声明多种权限委托。在生成工具中,你可以添加多个 SHA256 指纹用于不同的签名密钥(如 debug 和 release),工具会自动将它们合并到同一个 target 的指纹列表中。
Google Play App Signing 对 TWA 有什么影响?
启用 Play App Signing 后,Google 会使用自己的签名密钥对 APK 进行签名,而非你的上传密钥。这意味着:
必须使用 Play Console 中显示的签名指纹(不是本地 keystore 的指纹)
• 可以在 Play Console → 设置 → 应用签名 中找到正确的 SHA-256 指纹
• 如果你同时使用 debug 和 release 版本,建议在 assetlinks.json 中包含两个指纹
• 上传密钥的指纹只在首次上传时用于验证身份,不用于最终签名
我的网站使用 Cloudflare/CDN,需要注意什么?
使用 CDN 时需要注意:
1. 确保 /.well-known/assetlinks.json 路径不被缓存或设置较短的缓存时间
2. 不要对该路径启用自动 HTTPS 重定向(如果已全站 HTTPS,确保直接返回 200)
3. 检查 CDN 是否正确传递 Content-Type: application/json
4. 某些 CDN 可能会压缩或修改响应头,需要验证最终响应是否符合 Google 的要求
5. 可以在 Cloudflare 的页面规则中为 .well-known/* 路径设置特殊规则
如何快速测试 assetlinks.json 是否有效?
你可以通过以下方式测试:
1. 浏览器直接访问:在浏览器中打开 https://yourdomain.com/.well-known/assetlinks.json,检查是否返回正确的 JSON
2. curl 命令curl -I https://yourdomain.com/.well-known/assetlinks.json 检查 HTTP 状态码和 Content-Type
3. Google 官方工具:使用 Digital Asset Links 验证工具
4. adb 测试:安装应用后运行 adb shell pm get-app-links your.package.name 查看验证状态