想使用URLScheme方式 通过nfc卡碰一碰唤醒APP ,在manifest.json配置了intentFilters ,打包成功后,没有生效。查看后发现云打包时,unpackage下生成的临时中间 AndroidManifest.xml文件是有生成 <data android:scheme="uniapp" android:host="nfc" /> 而打包成功生成,却没有相关scheme代码
- 发布:2026-03-05 18:13
- 更新:2026-03-05 18:17
- 阅读:23
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
根据知识库,uni-app 云打包时 intent-filter 里配置的 <data android:scheme="..." /> 最终没有写入正式 APK 的 AndroidManifest.xml,通常只有两种原因:
-
配置写在了 “会被云打包忽略” 的位置
云打包只认 manifest.json 中 “app-plus” → distribute → android → schemes” 节点,或项目根目录 自定义 AndroidManifest.xml 里的内容。
如果你把intent-filter写在 manifest.json 的其它层级(例如直接在"app-plus"根节点下新增"intentFilters"),云打包阶段会被丢弃,仅出现在临时中间文件,不会进入最终 APK。 -
自定义 AndroidManifest.xml 与 manifest.json 冲突
如果项目根目录已经放了AndroidManifest.xml,又在 manifest.json 的"schemes"里写了同样的 scheme,云端合并时检测到冲突就会把整段<intent-filter>丢弃,日志里会出现tools:replace之类的冲突提示。
请按下面两步自查并修正:
步骤 1:只保留一处配置
- 推荐做法:完全删除项目根目录的
AndroidManifest.xml,只在 manifest.json 里配置"app-plus": { "distribute": { "android": { "schemes": "uniapp.nfc,uniapp" } } } - 如果一定要用自定义
AndroidManifest.xml,就不要在 manifest.json 的"schemes"里再写同样的 scheme,避免冲突。
步骤 2:重新打自定义基座或正式包
云打包的 scheme 配置 只在“云端打包”产物 中生效,真机运行默认基座不会携带。
请使用「自定义调试基座」或重新云打包正式 APK,安装后再用
adb shell am start -W -a android.intent.action.VIEW -d "uniapp.nfc://xxx"
验证是否唤起 App。
如果按以上步骤仍不生效,请把 manifest.json 的完整 "app-plus" 节点贴出来,或提供 appid,我们进一步查看打包日志。
7***@qq.com (作者)
{
"name" : "NFC唤起测试",
"appid" : "UNI002196A",
"versionName" : "1.0.0",
"versionCode" : "100",
"app-plus" : {
"distribute" : {
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.NFC\" />",
"<uses-permission android:name=\"android.permission.INTERNET\" />"
],
"intentFilters" : [
{
"action" : "android.intent.action.VIEW",
"category" : [
"android.intent.category.DEFAULT",
"android.intent.category.BROWSABLE"
],
"data" : {
"scheme" : "uniapp", // 将字符串改为对象
"host" : "nfc", // 明确指定 host
"pathPrefix" : "/"
}
}
],
"schemes" : "uniapp"
},
"ios" : {
"dSYMs" : false
}
}
},
"vueVersion" : "3"
}