Compose Multiplatform 项目:macOS 应用签名与公证全流程指南

Compose Multiplatform 项目:macOS 应用签名与公证全流程指南

compose-multiplatform JetBrains/compose-multiplatform: 是 JetBrains 开发的一个跨平台的 UI 工具库,基于 Kotlin 编写,可以用于开发跨平台的 Android,iOS 和 macOS 应用程序。 compose-multiplatform 项目地址: https://gitcode.com/gh_mirrors/co/compose-multiplatform

前言

在 macOS 生态系统中分发应用程序时,开发者必须遵循苹果严格的签名和公证要求。本文将详细介绍如何在 Compose Multiplatform 项目中为 macOS 应用完成这些必要步骤,确保您的应用能够顺利运行在最新版本的 macOS 系统上。

签名与公证基础概念

代码签名的意义

代码签名是苹果安全体系的核心组成部分,它通过数字证书验证应用程序的来源和完整性。每个签名都包含开发者的唯一标识,确保用户知道软件的来源。

公证的必要性

公证是苹果引入的额外安全层,所有非 App Store 分发的应用都必须经过此流程。公证过程中,苹果服务器会扫描应用程序是否存在恶意代码,通过后会给应用附加一个"票证",使 macOS 信任该应用。

准备工作

开发环境要求

  1. Xcode:苹果官方开发工具套件,最新稳定版本
  2. JDK:至少需要 JDK 15 或更高版本,推荐使用 OpenJDK

开发者账号

需要一个有效的苹果开发者账号,这是获取开发证书和访问开发者门户的前提条件。

证书管理全流程

证书类型解析

  1. Developer ID Application:用于非 App Store 分发的应用程序签名
  2. Mac App Distribution:用于提交至 App Store 的应用程序签名
  3. Mac Installer Distribution:用于 App Store 分发的安装包签名

证书创建步骤

  1. 生成证书签名请求(CSR)

    • 使用 Keychain Access 中的 Certificate Assistant
    • 填写开发者邮箱和常用名称
    • 选择"保存到磁盘"选项
  2. 创建开发者证书

    • 登录苹果开发者门户
    • 根据分发渠道选择正确的证书类型
    • 上传之前生成的 CSR 文件
    • 下载并安装生成的证书

证书验证方法

通过终端命令可以查看已安装的证书:

/usr/bin/security find-certificate -c "Developer ID Application"

对于多证书环境,需要指定密钥链路径来明确使用哪个证书。

应用标识配置

Bundle ID 规范

  1. 必须采用反向 DNS 命名法(如 com.companyname.appname)
  2. 只能包含字母、数字、连字符和点号
  3. 必须与开发者门户中创建的 App ID 完全匹配

创建 App ID

  1. 在开发者门户中选择 App ID 类型
  2. 明确指定 Bundle ID(支持通配符格式)
  3. 建议为每个应用使用唯一的明确 ID

配置文件管理

配置文件类型

  1. 开发配置文件:用于开发和测试
  2. 分发配置文件:用于 App Store 分发
  3. TestFlight 专用:需要额外配置

配置文件创建

  1. 选择 Mac App Store 分发类型
  2. 关联对应的 App ID 和证书
  3. 下载并安装配置文件

自动化构建配置

Gradle DSL 配置

在 Compose Desktop 的 DSL 中配置 macOS 专用设置:

compose.desktop {
    application {
        nativeDistributions {
            macOS {
                bundleID = "com.example.app"
                signing {
                    sign.set(true)
                    identity.set("Developer Name")
                }
            }
        }
    }
}

关键配置项

  1. 签名配置

    • 启用签名(sign = true)
    • 指定证书身份(identity)
    • 可选密钥链路径(多证书环境)
  2. 公证配置

    • Apple ID 和专用密码
    • 开发团队 ID
    • 可通过环境变量安全注入

公证流程详解

公证任务执行

Compose Multiplatform 提供了便捷的 Gradle 任务:

./gradlew notarizeDmg \
          -Pcompose.desktop.mac.notarization.appleID=your_id \
          -Pcompose.desktop.mac.notarization.password=@keychain:NOTARIZATION_PASSWORD \
          -Pcompose.desktop.mac.notarization.teamID=your_team_id

公证状态查询

公证通常需要 15-30 分钟完成,可以通过以下方式优化流程:

  1. 提前上传应用进行预检
  2. 确保应用不包含禁止的内容
  3. 使用标准化的工具链构建

TestFlight 特殊配置

必要配置项

  1. 双重配置文件(应用和 JVM 运行时)
  2. 专门的授权文件(entitlements)
  3. 沙箱权限设置

授权文件示例

应用授权文件(entitlements.plist)必须包含:

<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.developer.team-identifier</key>
<string>TEAMID</string>

运行时授权文件(runtime-entitlements.plist)需要相应配置但无需团队标识。

常见问题解决

签名失败处理

  1. 验证证书是否过期
  2. 检查密钥链权限
  3. 确认 Bundle ID 一致性

公证被拒分析

  1. 检查应用是否包含可执行脚本
  2. 验证所有动态库是否已正确签名
  3. 确保不使用私有 API

TestFlight 不可用

  1. 确认配置文件匹配
  2. 检查授权文件完整性
  3. 验证沙箱设置正确性

最佳实践建议

  1. 自动化流程:将签名和公证集成到 CI/CD 流程中
  2. 安全存储:使用密钥链管理敏感信息
  3. 提前测试:在开发阶段就验证签名配置
  4. 文档记录:维护详细的证书和配置文件记录

通过遵循本指南,开发者可以确保他们的 Compose Multiplatform 应用满足苹果的所有安全要求,顺利分发到 macOS 用户手中。记住,苹果的政策可能会更新,建议定期查看最新文档以保持合规。

compose-multiplatform JetBrains/compose-multiplatform: 是 JetBrains 开发的一个跨平台的 UI 工具库,基于 Kotlin 编写,可以用于开发跨平台的 Android,iOS 和 macOS 应用程序。 compose-multiplatform 项目地址: https://gitcode.com/gh_mirrors/co/compose-multiplatform

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯爽莹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值