Browse Source

Documentation for how to package apps using Conveyor. (#2303)

* Add a mention in the packaging tutorial about Conveyor, with a feature comparison on a separate page.

Remove the link from the main page to the signing/notarization tutorial as it's already linked to from the main packaging tutorial in any case.

* Address review comments.

- Don't talk about jpackage.
- Put the features of the built in tasks first on the comparisons page.
- Remove discussion of JNI.

Additionally:

- Reformat the feature list so the summary comes first in bold.
- Point out that the feature list isn't complete.
pull/2347/head
Mike Hearn 2 years ago committed by GitHub
parent
commit
91daaae32d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      README.md
  2. 16
      tutorials/Native_distributions_and_local_execution/README.md
  3. 22
      tutorials/Native_distributions_and_local_execution/packaging-tools-comparison.md

3
README.md

@ -24,8 +24,7 @@ Preview functionality (check your application UI without building/running it) fo
* [Swing interoperability](tutorials/Swing_Integration) * [Swing interoperability](tutorials/Swing_Integration)
* [Navigation](tutorials/Navigation) * [Navigation](tutorials/Navigation)
* [Accessibility](https://github.com/JetBrains/compose-jb/tree/master/tutorials/Accessibility) * [Accessibility](https://github.com/JetBrains/compose-jb/tree/master/tutorials/Accessibility)
* [Building native distribution](tutorials/Native_distributions_and_local_execution) * [Building a native distribution](tutorials/Native_distributions_and_local_execution)
* [Signing and notarization](tutorials/Signing_and_notarization_on_macOS)
Also, see [Foundation](https://developer.android.com/jetpack/compose/documentation#core) and [Design](https://developer.android.com/jetpack/compose/documentation#design) docs from Google. They were originally written for Android, but most of information applies to Compose for Desktop as well. Also, see [Foundation](https://developer.android.com/jetpack/compose/documentation#core) and [Design](https://developer.android.com/jetpack/compose/documentation#design) docs from Google. They were originally written for Android, but most of information applies to Compose for Desktop as well.

16
tutorials/Native_distributions_and_local_execution/README.md

@ -5,11 +5,18 @@
In this tutorial, we'll show you how to create native distributions (installers/packages) for all the supported systems. In this tutorial, we'll show you how to create native distributions (installers/packages) for all the supported systems.
We will also demonstrate how to run an application locally with the same settings as for distributions. We will also demonstrate how to run an application locally with the same settings as for distributions.
## Gradle plugin ## Available tools
There are two tools available for packaging Compose applications:
1. The Compose Multiplatform Gradle plugin which provides tasks for basic packaging, obfuscation and (macOS only) signing.
2. [Conveyor](https://www.hydraulic.software), which is a separate tool not made by JetBrains.
`org.jetbrains.compose` Gradle plugin simplifies the packaging of applications into native distributions and running an application locally. This tutorial covers how to use the built-in tasks. Conveyor has [its own tutorial](https://conveyor.hydraulic.dev/latest/tutorial/1-get-started/). The choice of which to use boils down to features/ease of use vs price. Conveyor provides support for online updates, cross-building and [various other features](packaging-tools-comparison.md) but requires [a license](https://hydraulic.software/pricing.html) for non-open source projects. The packaging tasks come with the Compose Desktop Gradle plugin, but the resulting packages don't support online updates and will require a multi-platform CI setup to create packages for each OS.
## Gradle plugin
Currently, the plugin uses [jpackage](https://openjdk.java.net/jeps/343) for packaging distributable applications. `org.jetbrains.compose` Gradle plugin simplifies the packaging of applications into native distributions using `jpackage` and running an application locally.
Distributable applications are self-contained, installable binaries which include all the Java runtime components they need, Distributable applications are self-contained, installable binaries which include all the Java runtime components they need,
without requiring an installed JDK on the target system. without requiring an installed JDK on the target system.
@ -118,8 +125,7 @@ to run such applications will be faced with an error like this:
<img alt="" src="attrs-error.png" height="462" /> <img alt="" src="attrs-error.png" height="462" />
See [our tutorial](/tutorials/Signing_and_notarization_on_macOS/README.md) See [our tutorial](/tutorials/Signing_and_notarization_on_macOS/README.md) on how to sign and notarize your application.
on how to sign and notarize your application.
## Specifying package version ## Specifying package version

22
tutorials/Native_distributions_and_local_execution/packaging-tools-comparison.md

@ -0,0 +1,22 @@
# Packaging tools comparison
The built-in Gradle tasks cover basic packaging needs:
* Creation of MSI files or NSIS installer EXEs for Windows, signed app bundles for macOS and DEB/RPM packages for Linux.
* Bundling of the JVM using `jlink`.
* Customization of packaging options on each OS.
Conveyor ([docs](https://conveyor.hydraulic.dev/)) is a tool available for download from [Hydraulic](https://www.hydraulic.software). It integrates with the Compose Gradle plugin and is useful if you want any of the following things:
* **Online updates.** The Compose plugin creates packages that users must update manually by reinstalling. Conveyor generates packages that can silently update themselves in the background on Windows/macOS, or which use apt/etc on Linux.
* **Cross-building.** Creation, signing and notarization of packages for all supported targets from any OS (e.g. your developer laptop, a CI machine). The built-in tasks must be run from each OS you target.
* **Self-signed packages.** These don't require you to purchase signing certificates, but require the user to copy/paste terminal commands.
* **Download pages.** Generated static HTML that detects the user's OS and CPU architecture ([example](https://conveyor.hydraulic.dev/latest/#compose-multiplatform)).
* **Icon conversion.** The built in tasks require you to convert icons to platform specific formats manually.
* **Size optimization.** `jdeps` is used to shrink the download by stripping unused JDK modules.
* **Accessibility.** Automatic support for screen readers is added using the Java Accessibility Bridge.
* **Happy IT departments.** Conveyor uses MSIX, Microsoft's current-gen Windows 10/11 packaging system, which is deeply integrated with Windows network admin tools.
* **CLI support.** Supplementary command line tools included with your package.
* **Commercial support.**
This isn't a complete list of features, we suggest checking their docs to see what's available. It's free for open source projects, but after the introductory period ends it will require a license for commercial projects (see their [pricing page](https://www.hydraulic.software/pricing.html) for details).
Loading…
Cancel
Save