为何构建过程会将network_security_config.xml的Host合并至Android AppLinks?
这其实是Android Gradle插件(AGP)的默认设计行为,目的是帮开发者减少重复配置、确保App Links验证和网络信任规则的一致性,具体原因可以拆解成这几点:
自动同步信任域名,避免重复劳动
你在network_security_config.xml里配置的<domain-config>主机,都是应用明确信任的域名——AGP默认会认为这些域名也应该是App Links需要验证的目标,所以会自动把它们合并到带有android:autoVerify="true"的<intent-filter>里。毕竟如果一个域名是应用网络层信任的,很大概率也是你想通过App Links唤起应用的域名,手动重复添加太麻烦了。适配App Links的验证逻辑
当你的Intent Filter标记了autoVerify="true",Android系统会对Intent Filter里所有主机的assetlinks.json进行验证。AGP自动导入信任主机,是为了确保所有你信任的域名都能参与App Links验证,不用你手动把network_security_config里的每一个域名都复制到Intent Filter中,降低漏配的概率。
回到你的例子,你之前的network_security_config里肯定配置了scribble-cloud-v24-test-dot-scribble-cloud.appspot.com和scribble-cloud.appspot.com这两个信任主机,所以AGP在构建合并清单时,自动把它们添加到了带有autoVerify的Intent Filter里,同时保留了你原本配置的letsdraw.fun相关规则。
如果不想让AGP自动做这件事,你可以在模块的build.gradle(或build.gradle.kts)里关闭这个特性:
android { defaultConfig { appLinks { autoVerify { enabled = false } } } }
或者更精细地指定哪些域名需要被包含,避免意外的主机被加入验证列表。
内容的提问来源于stack exchange,提问作者Will Calderwood

