Tauri 踩坑 appLink 修改后闪退

如题,Grok 救我狗命,我得重新苹果 Grok 搜索能力的优势了。

**问题归根到底应该就是 Info.plist 没有在修改 appLink 之后自动更新,导致匹配不上。**解决方案是清理掉原来的自动生成内容,重新运行 ios init。估计不止这种问题,tauri + iOS 本来能正常跑,改了配置突然运行不了的情况,都可以尝试一下重新 init。这里还有点感悟,一旦出了舒适区,即使有 AI 也要花费不少时间解决这些问题,如果是熟练的 iOS 开发者应该一早就感应到这种问题了吧。

1. "appLink": false 的正确含义和用法

  • appLink: false (或省略) = 自定义 URI Scheme (如 myapp://xxx),不需要服务器、不需要 .well-known 文件。
  • 插件会在构建时自动往 Info.plist 里写入 CFBundleURLTypes。
  • appLink: true (默认) = Universal Link / App Link(https + host),需要苹果验证文件。

正确配置(tauri.conf.json):

json 复制代码
{
  "plugins": {
    "deep-link": {
      "mobile": [
        {
          "scheme": ["myapp"],        // ← 必须有这个,数组形式,方案名建议全小写
          "appLink": false            // 自定义 scheme 必须显式 false 或省略
        }
        // 如果你还想同时支持 Universal Link,可以再加一个对象
        // {
        //   "host": "yourdomain.com",
        //   "pathPrefix": ["/open"]
        //   // appLink 默认 true,可不写
        // }
      ]
    }
  }
}

常见写错导致闪退的几种情况:

  • 把 appLink: false 直接写在有 host 的对象里(混合使用)。
  • 只写 appLink: false 却没写 scheme(插件生成空/无效的 CFBundleURLTypes)。
  • 用错字段名:老版本可能是 "schemes",新版是 "scheme"(注意单数)。
  • 把 appLink 写在 deep-link 顶层而不是 mobile 数组里的对象里。

2. 为什么会闪退?

  • Info.plist 生成出错(空 array、重复 key、XML 格式坏掉)。
  • iOS 系统在启动时解析 plist 失败,直接 kill 进程。
  • 之前用 Universal Link(appLink true)时 Xcode 已经加了 com.apple.developer.associated-domains entitlement,切换到 false 后 entitlement 和 provisioning profile 不匹配,也会导致启动失败。

3. 立即修复步骤(必做)

  1. 修正配置 为上面正确的格式(只保留 scheme + appLink: false)。

  2. 彻底清理构建缓存 :

    bash 复制代码
    tauri ios clean          # 如果有这个命令
    # 或者手动
    rm -rf target/ src-tauri/target src-tauri/gen/apple
  3. 删除 Xcode DerivedData(最重要):

    bash 复制代码
    rm -rf ~/Library/Developer/Xcode/DerivedData
  4. 重新生成/运行:

    bash 复制代码
    tauri ios dev            # 或 tauri ios build
  5. 如果还是闪退,打开 Xcode 项目(target/ios 里生成的 .xcodeproj),找到 Info.plist,搜索 CFBundleURLTypes,确认里面有你的 scheme,且没有空数组。

4. 验证是否成功

  • 构建成功后,用模拟器测试:

    bash 复制代码
    xcrun simctl openurl booted myapp://test
  • App 应该正常启动并收到 deep-link 事件。

总结 :99% 是配置写错了(少了 scheme 或混用了 host),导致 Info.plist 坏掉。改对配置 + 清理缓存基本就能解决。如果清理后还闪退,把你的 plugins.deep-link 那段完整配置贴出来,我再帮你看。

相关推荐
Solis程序员4 小时前
Stripe 幂等表:把「不确定的重试」变成「查表返回」
前端·安全·bootstrap·php·agent
李纲明4 小时前
WordPress 站点变慢:按 TTFB → 缓存 → 查询 → 前端 分层排查(含配置注意)
前端·缓存·性能优化·wordpress·后端开发
程序人生8884 小时前
PDF 转 Word 版式错乱、表格丢失?DocConverter Web 格式互转引擎的保真实践
前端·人工智能·opencv·机器学习·pdf·word
粥里有勺糖6 小时前
安利一下最近用的桌面“Agent” | T3 Code
前端·github·ai编程
xy34536 小时前
Axure 9.0 动态面板基本操作
前端·ui·html·axure·原型·产品设计
不停喝水6 小时前
【前端转全栈java速通课】 项目实战④7-11节 操作数据库-登录-注册-修改密码-注销-mubatis-plus简化crud-
java·前端·数据库
一水鉴天7 小时前
统一对象拓扑(UOT)设计全链定稿:从三件事分离到三继承 之1 20261010(豆包“查看聊天内容”继续)
前端·css
栖凤7 小时前
Java 的 try-catch 在 Agent 里失效了,我用了 5 个模式才兜住
java·前端·python
粥里有勺糖7 小时前
视野修炼第136期 | 前端小恐龙"Deno"被收购
前端·github·ai编程
修炼的dance7 小时前
页面塞了13.88 MB字体,导出的PDF只有71 KB
前端