本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。
12. 发布
你将学到: 闭合循环 —— 为每个平台打包应用。 前置要求: 测试你的应用。
完整示例(复制、粘贴即可运行)
Main 按 classname(反射、无参构造函数)实例化的入口点 —— 同一个
core 运行在全部四个 launcher 上。这个最小且自包含的 MainWindow 就是每个目标所打包的内容。
原样即可编译。
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 章)。
- 按平台处理了不可用的功能(参见矩阵)。
- 权限:
AndroidManifest.xml/Info.plist。 - 签名(Android keystore / iOS provisioning)。
- 图标、launch screen、版本号。
课程结束 —— 接下来呢?
你构建了一个能打开、添加、导航、持久化、自适应并经过测试的应用 —— 并把它 打了包。从这里出发:
- 深入“为什么”:
concepts/。 - 规模化质量:
best-practices/。 - 详细发布:
platforms/。 - 零散任务:
cookbook/·ui/·data-and-services/。
回顾
一个 core,四个 Gradle launcher;MainWindow 按 classname;按平台的发布检查清单。
另请参阅
- 构建与分发 · 权威来源:第 4 章 §4.2
这个页面有帮助吗?感谢你的反馈!