如何为OSX编译.app包

时间:2014-02-26 07:54:47

标签: java ant javafx-2

我需要创建一个.app文件才能在osx上使用我的javafx应用程序。

我已经阅读了this,但它没有多大帮助......

上面的教程有一个主题“DMG包”但是当我使用fxbuild编译我的应用程序时,任何地方都没有.app文件夹/ conainer(也没有dmg)。我做错了什么?

1 个答案:

答案 0 :(得分:1)

示例构建脚本

这是script,它在OS X上创建并安装.app包。

#! /bin/bash

################
# package.sh
#
# Packages java code as a native OS X application
#
# - Fetches source for a Java Swing HelloWorld application from the web
# - Compiles the source
# - Packages the source into a native Mac application
# - Installs the native Mac application
# - Runs the native Mac Application
#
# Requires:
#   OS X 10.8+
#   Java 8b77+ (http://jdk8.java.net/download.html) 
#   super user rights on the execution account
#
# To Use:
#   chmod +x package.sh
#   ./package.sh
# As the script executes sudo commands, enter your 
# superuser password as needed.
################


# select java version
set JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$JAVA_HOME/bin/java -version

# cleanup work directory and any existing application install
if [ -d work ]; then
  rm -rf work
fi

if [ -d /Applications/HelloWorld.app ]; then
  sudo rm -rf /Applications/HelloWorld.app
fi

# create work directory and use it
mkdir work
cd work

# fetch a simple HelloWorldSwing sample java source from the web
mkdir start
cd start
curl -O http://docs.oracle.com/javase/tutorial/uiswing/examples/start/HelloWorldSwingProject/src/start/HelloWorldSwing.java
cd ..

# compile the HelloWorldSwing java source
$JAVA_HOME/bin/javac start/HelloWorldSwing.java

# create a jar file 
$JAVA_HOME/bin/jar cvf HelloWorldSwing.jar start/*.class

# make an executable jar file
$JAVA_HOME/bin/javafxpackager -createjar -srcdir . -appclass start.HelloWorldSwing -srcfiles HelloWorldSwing.jar -noembedlauncher -outdir . -outfile HelloWorld.jar

# package the jar and java runtime as a native application with installer
$JAVA_HOME/bin/javafxpackager -deploy -srcdir . -srcfiles HelloWorld.jar -outdir . -outfile HelloWorld -appclass start.HelloWorldSwing -native -name HelloWorld

# codesign the application using your apple developer ID (if you have one)
# allows the app to be accepted by the Apple GateKeeper - https://developer.apple.com/resources/developer-id/
# codesign -s "Developer ID Application" bundles/HelloWorld.app

# mount the installer disk image
hdiutil attach bundles/HelloWorld.dmg

# install the HelloWorld application from the disk image
sudo cp -R /Volumes/HelloWorld/HelloWorld.app /Applications

# unmount the installer disk image
umount `mount | grep HelloWorld | cut -d " " -f1`

# leave the work directory
cd ..

# run our newly installed application
open -a HelloWorld

其他问题的解答

  

有没有办法在Windows上创建一个?

如果你想创建一个Mac App,你需要一台Mac(至少适用于JavaFX 2.2或8个应用程序)。

  

WAIT-这只是Java 8吗? “需要:Java 8b77 +”

该脚本也可以与更高版本的Java 7一起使用(例如在构建6之后),但我从未尝试过使用这些版本。

它肯定不适用于Java 7的早期版本(例如在构建6之前),也不适用于此之前的任何Java版本。

  

“需要:OS X 10.8 +”

该脚本也可能适用于OS X 10.7,但我没有使用该版本进行测试。

它肯定不适用于10.6或更早版本(应用程序也不会生成)。

  

尝试了一个名为app-bundler.jar的java类,但它没有用

我从未尝试过app-bundler.jar,也无法评论它可能会做什么或不会做什么。此解决方案与app-bundler.jar无关。