Friday, March 10, 2023

Deploying LogoRRR to Apple's App Store using JPackage

From the outset of this project, I had a strong desire to deploy
LogoRRR to the App Store. Despite my best efforts, I was unable to achieve this goal last year. However, with the release of version 23.2.0, I reached my goal and put LogoRRR into the store. In hindsight, the process was easier than I anticipated.

Initially, I tried to call the necessary tools directly to create the pkg, and used jlink to create temporary app images, but this proved unnecessary. Instead, I used jpackage, which was able to assemble everything I needed in its latest release. I encourage you to use my findings as a starting point for delivering your application to a global audience.

Here's a quick outline of my approach:

  • I used JavaFX as the GUI technology and Scala as the implementation language.
  • Maven was used as the build tool.
  • JPackage was used to create a pkg suitable for deployment to the App Store
  • Source code is available at github

To dive a little deeper into the deployment using JPackage:

  • I circumvented the modular JavaFX approach by using my own Launcher class.
  • I put everything application-related in a shaded jar.
  • I created a libs directory for everything else.
  • I created the necessary Entitlements and plist files for JPackage.
  • To keep things clean, I used an 'options' file for JPackage.

To verify my package, I used Apple's Transporter App, which gave me a quick response on any missing files in my package.

One key technique to get a valid plist file was to create a stub project in XCode to investigate the syntax required for a successful deployment.

In conclusion, deploying your application to the App Store using JPackage is a viable option. With careful attention to the steps outlined above, you too can achieve success in reaching a global audience.