我可以为JavaFX应用程序创建自己的本机启动程序吗?

时间:2015-11-10 22:35:30

标签: macos javafx mac-app-store

我们已经开发了一个JavaFX应用程序,我们计划将其提交到Mac App Store,但当天发现它的当前形式很晚 - 因为它的功能/使用限制与我们支付的订阅相关联网站 - 通过In App Purchase以外的机制(Review Guidelines第7.1,7.13和7.15节)提供这些附加功能可能会被拒绝。

我们想通过将In App Purchase添加到我们的JavaFX应用程序来解决这个问题!

我想到的第一个解决方案是在.app包中包含一个“帮助应用程序”,其中包含JavaFX类,捆绑的JRE和javapackager生成的本机包装器。该助手应用程序将从JavaFX应用程序调用,并将显示In App Purchases列表。大!除了可以使用StoreKit从iTunes Connect上与之关联的应用程序包中访问IAP。我的.app包中的帮助应用程序不能与主应用程序(本机包装器)共享相同的包ID。

另一种解决方案是,如果我可以用我自己的可执行文件替换javapackager生成的简单本机包装器。启动.app时,我自己的本机包装器将使用捆绑的JRE调用JAR,就像当前的包装器一样,但它也可以提供用于进行In App Purchase的UI(Java部件与其包装器之间的通信可能是很难,但最终它可以通过愚蠢的东西来实现,就像一个部分写入另一个监视的[沙盒]文件一样。

我的问题是:javapackager生成的本机包装器/启动器的源代码 - 或者javapackager本身的源代码 - 可以在任何地方使用吗?如果没有,是否有人知道该启动器如何调用/Java下的.app中捆绑的JAR文件?

1 个答案:

答案 0 :(得分:1)

是的,你可以。

JavaFX启动程序的源代码可在OpenJDK网站上免费获得。要开始使用,您需要从源存储库中的main.m文件夹中复制main/native/launcher/mac文件。对于Java FX 8,就在这里:http://hg.openjdk.java.net/openjfx/8/master/rt/file/f89b7dc932af/modules/fxpackager/src/main/native/launcher/mac/main.m

然后,您在Xcode中创建一个新项目并复制到该main.m文件中。构建项目时,会生成一个.app包,并且该bundle中的Contents/Mac OS文件夹下是您的新启动器可执行文件。将其复制到由javapackager生成的应用包中并正常运行该捆绑包,它将是您首先执行的自定义启动器。