ios.md 14 KB


title: Defold iOS 平台开发

brief: 本手册解释了如何在 Defold 中构建和运行 iOS 设备上的游戏和应用。

iOS 开发

::: sidenote 为 iOS 打包游戏仅适用于 Mac 版本的 Defold 编辑器。 :::

iOS 要求 所有 你想要在手机或平板电脑上运行的应用 必须 使用 Apple 颁发的证书和配置文件进行签名。本手册解释了为 iOS 打包游戏所涉及的步骤。在开发过程中,通过 开发应用 运行游戏通常是首选,因为它允许你直接将内容和代码热重载到你的设备上。

Apple 的代码签名过程

与 iOS 应用相关的安全性由多个组件组成。你可以通过注册 Apple 的 iOS 开发者计划 获得所需工具的访问权限。注册后,请前往 Apple 开发者会员中心

Apple Member Center

证书、标识符和配置文件 部分包含了你需要的所有工具。从这里你可以创建、删除和编辑:

证书 : Apple 颁发的加密证书,用于标识你作为开发者的身份。你可以创建开发或生产证书。开发者证书允许你在沙盒测试环境中测试某些功能,例如应用内购买机制。生产证书用于对最终应用进行签名以便上传到 App Store。在将应用放到设备上进行测试之前,你需要使用证书对应用进行签名。

标识符 : 用于各种用途的标识符。可以注册通配符标识符(即 some.prefix.*),这些标识符可以用于多个应用。应用 ID 可以包含应用服务信息,例如应用是否启用 Passbook 集成、Game Center 等。此类应用 ID 不能是通配符标识符。为了使应用服务正常工作,你的应用的 包标识符 必须与应用 ID 标识符匹配。

设备 : 每个开发设备都需要使用其 UDID(唯一设备标识符,见下文)进行注册。

配置文件 : 配置文件将证书与应用 ID 和设备列表相关联。它们指明哪个开发者的哪个应用被允许在哪些设备上运行。

在 Defold 中为游戏和应用签名时,你需要有效的证书和有效的配置文件。

::: sidenote 你可以在会员中心主页上执行的一些操作也可以在 Xcode 开发环境中执行---前提是你已安装了 Xcode。 :::

设备标识符 (UDID) : iOS 设备的 UDID 可以通过 wifi 或线缆将设备连接到计算机来找到。打开 Xcode 并选择 Window ▸ Devices and Simulators。当你选择设备时,会显示序列号和标识符。

xcode devices

如果你没有安装 Xcode,你可以在 iTunes 中找到标识符。点击设备符号并选择你的设备。

itunes devices

  1. 摘要 页面上,找到 *序列号*。
  2. 点击 序列号 一次,使该字段变为 *UDID*。如果你反复点击,将会显示设备的几条信息。继续点击直到显示 *UDID*。
  3. 右键点击长 UDID 字符串并选择 复制 将标识符复制到剪贴板,这样你就可以在 Apple 开发者会员中心注册设备时轻松地将其粘贴到 UDID 字段中。

使用免费的 Apple 开发者账户进行开发

从 Xcode 7 开始,任何人都可以安装 Xcode 并免费进行设备开发。你不必注册 iOS 开发者计划。相反,Xcode 会自动为你作为开发者颁发一个证书(有效期1年)和针对你的应用的配置文件(在你的特定设备上有效一周)。

  1. 连接你的设备。
  2. 安装 Xcode。
  3. 向 Xcode 添加新账户并使用你的 Apple ID 登录。
  4. 创建一个新项目。最简单的"单视图应用"即可。
  5. 选择你的"团队"(为你自动创建)并为应用提供一个包标识符。

::: important 记下包标识符,因为你必须在你的 Defold 项目中使用相同的包标识符。 :::

  1. 确保 Xcode 已为应用创建了 配置文件 和 *签名证书*。

  1. 在你的设备上构建应用。第一次,Xcode 会要求你启用开发者模式,并会用调试器支持准备设备。这可能需要一段时间。
  2. 当你验证应用可以正常工作后,在磁盘上找到它。你可以在"报告导航器"的构建报告中查看构建位置。

  1. 找到应用,右键单击它并选择 显示包内容。

  1. 将"embedded.mobileprovision"文件复制到你驱动器上你将找到它的某个位置。

此配置文件可以与你的代码签名身份一起使用,在 Defold 中为应用签名,有效期为一周。

当配置文件过期时,你需要在 Xcode 中再次构建应用并获取新的临时配置文件,如上所述。

创建 iOS 应用包

当你拥有代码签名身份和配置文件后,你就可以从编辑器中为你的游戏创建独立的应用包。只需从菜单中选择 Project ▸ Bundle... ▸ iOS Application...。

Signing iOS bundle

选择你的代码签名身份并浏览你的移动配置文件。选择要打包的架构(32位、64位和iOS模拟器)以及变体(Debug或Release)。你可以选择取消选中Sign application复选框以跳过签名过程,然后在稍后阶段手动签名。

::: important 在 iOS 模拟器上测试游戏时,你 必须 取消选中 Sign application 复选框。你将能够安装应用程序,但它无法启动。 :::

按*创建包*,然后系统会提示你指定包将在你的计算机上的哪个位置创建。

ipa iOS application bundle{.left}

你在 game.project 项目设置文件的 iOS 部分 中指定要使用的图标、启动屏幕故事板等。

:Build Variants

在已连接的 iPhone 上安装和启动包

你可以使用编辑器的打包对话框中的"在已连接设备上安装"和"启动已安装应用"复选框来安装和启动构建的包:

Install and launch iOS bundle

你需要安装 ios-deploy 命令行工具才能使此功能工作。安装它的最简单方法是使用 Homebrew:

$ brew install ios-deploy

如果编辑器无法检测到 ios-deploy 工具的安装位置,你需要在 首选项 中指定它。

创建故事板

你使用 Xcode 创建故事板文件。启动 Xcode 并创建一个新项目。选择 iOS 和单视图应用:

Create project

点击 Next 并继续配置你的项目。输入产品名称:

Project settings

点击 Create 完成该过程。你的项目现已创建,我们可以继续创建故事板:

The project view

拖放图像以将其导入项目。接下来选择 Assets.xcassets 并将图像拖放到 Assets.xcassets

Add image

打开 LaunchScreen.storyboard 并点击加号按钮(+)。在对话框中输入"imageview"以查找 ImageView 组件。

Add image view

将图像视图组件拖放到故事板上:

Add to storyboard

从图像下拉列表中选择你之前添加到 Assets.xcassets 的图像:

定位图像并进行你需要的任何其他调整,也许添加标签或其他 UI 元素。完成后,将活动方案设置为"Build -> Any iOS Device (arm64, armv7)"(或"Generic iOS Device")并选择 Product -> Build。等待构建过程完成。

::: sidenote 如果"Any iOS Device (arm64)"中只有 arm64 选项,请在"Project -> Basic -> Deployment"设置中将 iOS Deployment target 更改为 10.3。这将使你的故事板与 armv7 设备(例如 iPhone5c)兼容。 :::

如果你在故事板中使用图像,它们不会自动包含在你的 LaunchScreen.storyboardc 中。使用 game.project 中的 Bundle Resources 字段来包含资源。 例如,在 Defold 项目中创建 LaunchScreen 文件夹,并在其中创建 ios 文件夹(ios 文件夹仅用于包含这些文件到 ios 包中),然后将你的文件放入 LaunchScreen/ios/。在 Bundle Resources 中添加此路径。

最后一步是将编译的 LaunchScreen.storyboardc 文件复制到你的 Defold 项目。在 Finder 中打开以下位置并将 LaunchScreen.storyboardc 文件复制到你的 Defold 项目:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc

::: sidenote 论坛用户 Sergey Lerg 已经整理了展示此过程的视频教程。 :::

一旦你有了故事板文件,就可以从 game.project 中引用它。

创建图标资源目录

::: sidenote 从 Defold 1.2.175 开始需要此设置。 :::

使用资源目录是 Apple 管理应用图标的首选方式。实际上,这是提供 App Store 列表中使用的图标的唯一方法。你以与故事板相同的方式创建资源目录,使用 Xcode。启动 Xcode 并创建一个新项目。选择 iOS 和单视图应用:

Create project

点击 Next 并继续配置你的项目。输入产品名称:

Project settings

点击 Create 完成该过程。你的项目现已创建,我们可以继续创建资源目录:

The project view

将图像拖放到代表不同支持图标大小的空框中:

Add icons

::: sidenote 不要为通知、设置或 Spotlight 添加任何图标。 :::

完成后,将活动方案设置为"Build -> Any iOS Device (arm64)"(或"Generic iOS Device")并选择 Product -> Build。等待构建过程完成。

::: sidenote 确保你为"Any iOS Device (arm64)"或"Generic iOS Device"构建,否则在上传构建时你会得到 ERROR ITMS-90704 错误。 :::

Build project

最后一步是将编译的 Assets.car 文件复制到你的 Defold 项目。在 Finder 中打开以下位置并将 Assets.car 文件复制到你的 Defold 项目:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car

一旦你有了资源目录文件,就可以从 game.project 中引用它和图标:

Add icon and asset catalog to game.project

::: sidenote App Store 图标不必从 game.project 中引用。上传到 iTunes Connect 时,它会自动从 Assets.car 文件中提取。 :::

安装 iOS 应用包

编辑器会写入一个 .ipa 文件,这是一个 iOS 应用包。要在你的设备上安装该文件,你可以使用以下工具之一:

你还可以使用 xcrun simctl 命令行工具与通过 Xcode 提供的 iOS 模拟器一起工作:

# 显示可用设备列表
xcrun simctl list

# 启动 iPhone X 模拟器
xcrun simctl boot "iPhone X"

# 将 your.app 安装到已启动的模拟器
xcrun simctl install booted your.app

# 启动模拟器
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

:Apple 隐私清单

出口合规信息

当你将游戏提交到 App Store 时,你将被要求提供有关游戏中使用加密的出口合规信息。Apple 解释了为什么这是必需的

"当你将应用提交到 TestFlight 或 App Store 时,你将应用上传到美国的服务器。如果你在美国或加拿大之外分发你的应用,无论你的法律实体位于何处,你的应用都受美国出口法律的约束。如果你的应用使用、访问、包含、实现或合并加密,这被视为加密软件的出口,这意味着你的应用必须符合美国的出口合规要求,以及你分发应用所在国家的进口合规要求。"

Defold 游戏引擎将加密用于以下目的:

  • 通过安全通道进行调用(即 HTTPS 和 SSL)
  • Lua 代码的版权保护(以防止复制)

Defold 引擎中这些加密的使用在美国和欧盟法律下免于出口合规文件要求。大多数 Defold 项目将保持豁免,但添加其他加密方法可能会改变此状态。你有责任确保你的项目符合这些法律和 App Store 规则的要求。有关更多信息,请参阅 Apple 的出口合规概述

如果你认为你的项目是豁免的,请在项目的 Info.plist 中将 ITSAppUsesNonExemptEncryption 键设置为 False,有关详细信息,请参阅应用程序清单

常见问题

:iOS FAQ