在本教程中,我们将创建app或dmg文件,它可以在macOS系统上运行,而macOS系统不需要安装JRE或JDK。我们将使用IntelliJ和maven,但它仍然可以提供使用gradle或Eclipse或其他变体的方法。
提前准备:
- IntelliJ
- Java 14 (JAVA_HOME)
- JavaFX 14 (PATH_TO_FX)
如果您没有上述设置,请相应地设置您的系统和环境变量。。
openjfx.io 已经有了一个很好的“开始”页码:https://openjfx.io/openjfx-docs/
我们将执行类似的操作,但我将使用Java14而不是Java12。你仍然可以使用v12,它应该可以工作。
第一步: 创建一个新项目,并在左侧菜单上选择Maven(您可能会想单击JavaFX,但我们希望使用Maven作为编排器)。为了将JavaFX库添加到这个项目中,我们将使用archetype。使用以下值作为原型:
KEY | VALUE |
---|---|
GroupId | org.openjfx |
ArtifactId | javafx-maven-archetypes |
Version | 0.0.1 |
添加后,将在列表中选择原型。在不更改此选择的情况下,单击next和GroupId和ArtifactId。
第二步:在下一个窗口中,将archetype ArtifactId更改为“javafx-archetype-fxml”。
我们需要它来为我们的windows/views使用xml文件。这类似于Android中的xml文件布局。单击next并完成从archetype创建新项目。
第三步:修改javafx-maven-plugin插件的版本号为 0.0.4,然后可以
在 Maven Projects
面板中 (View > Tool Windows > Maven Projects) 可以看到选项
javafx:jlink
javafx:run
现在在控制台中键入以下命令:
mvn clean install
mvn javafx:run
模板中的基本GUI应用程序将运行。
现在我们要创建一个独立的应用程序文件
首先,让我们创建必要的文件:
这将为src创建一个名为target的同级文件夹。在target/image中,我们有在任何mac机器上运行这个应用程序所需的所有文件。目标macOS机器不需要安装JRE或JDK。这是苹果对你发布应用到应用商店的要求之一。应用程序不应要求安装单独的应用程序或框架。
转到终端中的target/image文件夹并键入以下内容,执行后,应用正常启动
./bin/java -m YOUR_GROUPID/YOUR_MAIN_CLASS
# for me it was like below:
# ./bin/java -m com.nduowang.javafx/com.nduowang.javafx.PostGirl
并查看应用程序是否正在运行。
现在如何将其转换为扩展名为.app的单个文件?我们将使用一个小工具:
应用
Appify是一个小型bash脚本,用于将此捆绑包转换为单个文件。
复制此内容并粘贴到名为appify的文件中。
#!/bin/bash
if [ "$1" = "-h" -o "$1" = "--help" -o -z "$1" ]; then cat <<EOF
appify v3.0.1 for Mac OS X - http://mths.be/appify
Creates the simplest possible Mac app from a shell script.
Appify takes a shell script as its first argument:
`basename "$0"` my-script.sh
Note that you cannot rename appified apps. If you want to give your app
a custom name, use the second argument:
`basename "$0"` my-script.sh "My App"
Copyright (c) Thomas Aylott <http://subtlegradient.com/>
Modified by Mathias Bynens <http://mathiasbynens.be/>
EOF
exit; fi
APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
您需要使用 chmod +x appify 使该文件可执行。最好还需要将其位置添加到PATH环境变量中。
现在创建一个名为 run.command
(文件名不重要,但我们需要记住该文件名以便以后使用)并应用 chmod+x run.command
命令并将其放在target/image文件夹下。
#!/bin/bash
cd -- "$(dirname -- "$BASH_SOURCE")"
cd bin
./java -m com.nduowang.javafx/com.nduowang.javafx.PostGirl
exit 0
现在运行以下命令创建应用程序包:
appify run.command MyJavaFXApp
在这一步之后,你不能更改你的应用程序名称,所以现在选择你喜欢的名称。或者你可以一直重复这个步骤。如果您双击此应用程序,它将不会运行。然而。
现在复制此旁边的所有文件和文件夹 MyJavaFXApp.app 文件。然后右键单击 MyJavaFXApp.app ,然后单击Show package contents;并将所有文件粘贴到Contents/MacOS/文件夹中。现在您可以双击应用程序文件,并看到它仍然按预期运行。
如何从应用程序文件创建dmg文件?
这是最简单的部分:
- 创建新文件夹并放置 MyJavaFXApp.app 投入其中
- 打开磁盘实用程序,然后单击“文件”>“新建图像”>“来自文件夹的图像”
- 选择您在步骤1中创建的文件夹
- 键入dmg文件名并将其保存到磁盘。
- 现在你有了一个包含app文件的dmg文件。
- 分发给你的朋友们
- 当然,如果你想把这个应用发布到appstore,苹果会对你有更多的要求,但这一步绝对是最重要的一步。