Android:lint id AppLinksAutoVerifyWarning总是失败,但AppLinks工作正常
我遇到的问题是,AppLinksAutoVerifyWarning的lint测试总是失败,并显示错误消息: 应用程序链接自动验证失败 ../../src/debug/AndroidManifest.xml:17:此主机不支持指向您的应用程序的应用程序链接。检查数字资产链接JSON文件: 我正在使用特定于目标的AndroidManifest进行调试构建,正如您在上面看到的。对于那些调试版本,我在包名后面附加了一个.debug后缀。因此,调试版本将具有包id mypackage.debug和发布版本将仅获得mypackage。两个版本都使用相同的发布密钥进行签名(由于sharedUserId),我确保assetlinks.json中的指纹与签名的指纹匹配。对于myhost,存在有效的ssl证书 我上传了支持mypackage.debug的assetlinks.json文件,并确保它具有正确的application/json mimetypeAndroid:lint id AppLinksAutoVerifyWarning总是失败,但AppLinks工作正常,android,lint,applinks,Android,Lint,Applinks,我遇到的问题是,AppLinksAutoVerifyWarning的lint测试总是失败,并显示错误消息: 应用程序链接自动验证失败 ../../src/debug/AndroidManifest.xml:17:此主机不支持指向您的应用程序的应用程序链接。检查数字资产链接JSON文件: 我正在使用特定于目标的AndroidManifest进行调试构建,正如您在上面看到的。对于那些调试版本,我在包名后面附加了一个.debug后缀。因此,调试版本将具有包id mypackage.debug和发布版
- 在手机上,应用程序链接工作正常
- 使用
不提供任何错误digitalAssetLink.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“测试AppLinkhttp://myhost“工作正常
- 我用
重新创建、上传并测试了assetlinks.json,它验证了ok,并且不会生成包含不同内容的json文件developers.google.com/digital asset links/tools/generator
- 使用textmate验证json语法
- 我还尝试将意图过滤器从调试AndroidManifest移动到主清单,将其移动到没有其他意图过滤器的其他活动
。。。有不正确的JSON语法
,这更奇怪,因为android本身和谷歌验证服务似乎可以很好地验证它。(可能与我们将所有流量从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>
我刚刚遇到了同样的问题,所以我查看了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;
开关(result.getValue().mStatus){
案例状态\u HTTP\u正常:
List packageNames=getPackageNameFromJson(
result.getValue().mJsonFile);
如果(!packageName.contains(packageName)){
报告(发布错误,主机,context.getLocation(主机),String.format(
“此主机不支持指向您的应用的应用链接。请检查数字资产链接JSON文件:%s”,
jsonPath);
}
打破
这对我来说是失败的,因为assetlinks.json中的包名与我清单中的包名不匹配。结果表明,我的团队中有人仅完成了将顶级项目转换为库项目的一半,并更改了顶级项目包名。但如果assetlinks.json在包名上输入错误,也可能发生这种情况。