我们已经开发了一个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文件?
答案 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
生成的应用包中并正常运行该捆绑包,它将是您首先执行的自定义启动器。