我遇到的问题是,AppLinksAutoVerifyWarning的lint测试总是在错误消息中失败:
app链接自动验证失败.././src/debug/AndroidManifest.xml:17:此主机不支持应用程序的应用链接。检查数字资产链接JSON文件:https://myhost/.well-known/assetlinks.json
我正在使用特定于目标的AndroidManifest进行调试构建,如上面所示。对于这些调试版本,我在包名后添加了一个.debug后缀。因此,调试构建将具有包id mypackage.debug,而发布版本只会得到修补包。两个构建都使用相同的发布密钥(由于sharedUserId)进行签名,我确保assetlinks.json中的指纹与签名的指纹匹配。对于我的主机,有一个有效的ssl证书。
我上传了assetlinks.json文件,支持mypackage.debug (一个修复包),并确保它具有正确的应用程序/json。
digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://myhost&relation=delegate_permission/common.handle_all_urls进行验证不会提供任何错误。adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "http://myhost"很好developers.google.com/digital-asset-links/tools/generator重新创建、上传和测试了developers.google.com/digital-asset-links/tools/generator,它验证了ok,并且不生成具有不同内容的json文件。所以一切看起来都很好,只是林特不起作用。我可以只是禁用皮棉检查,但我宁愿让它开,所以我知道什么时候有真正的问题。
有一件事我观察到:如果我将应用程序链接的意图过滤器从https更改为http,错误消息从lint更改为:... has incorrect JSON syntax,这就更奇怪了,因为android本身和google验证服务似乎可以很好地验证它。(可能与我们将所有流量从http转发到https有关)
当前意图-过滤器是:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="myhost"
android:pathPrefix="/open_app"
android:scheme="https"/>
</intent-filter>发布于 2017-04-10 21:30:10
我只是遇到了同样的问题,所以我查看了源代码中的lint检查:
switch (result.getValue().mStatus) {
case STATUS_HTTP_OK:
List<String> packageNames = getPackageNameFromJson(
result.getValue().mJsonFile);
if (!packageNames.contains(packageName)) {
context.report(ISSUE_ERROR, host, context.getLocation(host), String.format(
"This host does not support app links to your app. Checks the Digital Asset Links JSON file: %s",
jsonPath));
}
break;这对我来说是失败的,因为assetlinks.json中的包名与我的清单中的包名不匹配。我的团队中只有一半的人完成了将我们的顶级项目转换成库项目,并更改了顶级项目包的名称。但是,如果assetlinks.json在包名上有一个错误,也可能发生这种情况。
https://stackoverflow.com/questions/42649750
复制相似问题