# 发布

> 从 Gradle 模块打包并在每个平台上运行 —— 循环的终点。

Source: https://crossfly.dev/zh/docs/learn/shipping — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# 12. 发布

> **你将学到：** 闭合循环 —— 为每个平台打包应用。
> **前置要求：** [测试你的应用](/docs/learn/testing-your-app)。

## 完整示例（复制、粘贴即可运行）
`Main` **按 classname**（反射、无参构造函数）实例化的入口点 —— 同一个
`core` 运行在全部四个 launcher 上。这个最小且自包含的 `MainWindow` 就是每个目标所打包的内容。
原样即可编译。
```java
package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      add(LAY_AUTO, new Label("Meu app CrossFly"));

      Button ola = new Button("Olá, mundo!");
      ola.onAction(c -> Hint.show("Rodando em todas as plataformas", 2000));
      add(LAY_AUTO, ola);
   }
}
```
> 下面的代码片段只展示**核心部分**（放入 `onShow()` 内部的内容）。要运行它们，请放进上面的 `MainWindow` 骨架中。

## 一份代码，四个目标
同一个 `core` 运行在所有 launcher 上：
| 目标 | 构建 |
|---|---|
| 🖥️ 桌面 | `gradlew :lwjgl3:run`（dev）/ jar / 安装程序 |
| 🤖 Android | `gradlew :android:installDebug` / `assembleRelease`（AAB） |
| 🍎 iOS | `gradlew :ios:launchIPhoneSimulator` / `.ipa`（macOS+Xcode） |
| 🌐 Web | `gradlew :web:webBundle` → 静态内容 |

## bootstrap 所保证的内容
`Main` **按 *classname* 实例化你的 `MainWindow`**（反射、无参构造函数）—— 在所有目标上都相同。
图标和资源（Roboto/Material 字体在 bootstrap 时加载）随包一同分发。

## “可发布”检查清单
- [ ] 已测试（第 11 章）且响应式（第 10 章）。
- [ ] 按平台处理了不可用的功能（参见[矩阵](/docs/platforms/overview)）。
- [ ] 权限：`AndroidManifest.xml` / `Info.plist`。
- [ ] 签名（Android keystore / iOS provisioning）。
- [ ] 图标、*launch screen*、版本号。

## 课程结束 —— 接下来呢？
你构建了一个能**打开、添加、导航、持久化、自适应并经过测试**的应用 —— 并把它
打了包。从这里出发：
- **深入“为什么”：** [`concepts/`](/docs/concepts)。
- **规模化质量：** [`best-practices/`](/docs/best-practices)。
- **详细发布：** [`platforms/`](/docs/platforms)。
- **零散任务：** [`cookbook/`](/docs/cookbook) · [`ui/`](/docs/ui) · [`data-and-services/`](/docs/data-and-services)。

## 回顾
一个 `core`，四个 Gradle launcher；`MainWindow` 按 *classname*；按平台的发布检查清单。

## 另请参阅
- [构建与分发](/docs/platforms/building-and-releasing) · 权威来源：第 4 章 §4.2
