跳到内容
CrossFly 是 100% 开源在 GitHub 关注我们
CrossFlyCrossFly
开始使用

本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。

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、版本号。

课程结束 —— 接下来呢?

你构建了一个能打开、添加、导航、持久化、自适应并经过测试的应用 —— 并把它 打了包。从这里出发:

回顾

一个 core,四个 Gradle launcher;MainWindow 按 classname;按平台的发布检查清单。

另请参阅

这个页面有帮助吗?