You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/docs/distribute/appimage.mdx
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,18 @@ i18nReady: true
9
9
10
10
AppImages are convenient, simplifying the distribution process if you cannot make a package targeting the distribution's package manager. Still, you should carefully use it as the file size grows from the 2-6 MB range to 70+ MB.
11
11
12
+
:::note
13
+
14
+
GUI apps on macOS and Linux do not inherit the `$PATH` from your shell dotfiles (`.bashrc`, `.bash_profile`, `.zshrc`, etc). Check out Tauri's [fix-path-env-rs](https://github.com/tauri-apps/fix-path-env-rs) crate to fix this issue.
15
+
16
+
:::
17
+
18
+
## Limitations
19
+
20
+
Core libraries such as glibc frequently break compatibility with older systems. For this reason, you must build your Tauri application using the oldest base system you intend to support. A relatively old system such as Ubuntu 18.04 is more suited than Ubuntu 22.04, as the binary compiled on Ubuntu 22.04 will have a higher requirement of the glibc version, so when running on an older system, you will face a runtime error like `/usr/lib/libc.so.6: version 'GLIBC_2.33' not found`. We recommend using a Docker container or GitHub Actions to build your Tauri application for Linux.
21
+
22
+
See the issues [tauri-apps/tauri#1355](https://github.com/tauri-apps/tauri/issues/1355) and [rust-lang/rust#57497](https://github.com/rust-lang/rust/issues/57497), in addition to the [AppImage guide](https://docs.appimage.org/reference/best-practices.html#binaries-compiled-on-old-enough-base-system) for more information.
23
+
12
24
## Multimedia support via GStreamer
13
25
14
26
If your app plays audio/video you need to enable `tauri.conf.json > bundle > linux > appimage > bundleMediaFramework`. This will increase the size of the AppImage bundle to include additional gstreamer files needed for media playback. This flag is currently only fully supported on Ubuntu build systems. Make sure that your build system has all the plugins your app may need at runtime.
The stock Debian package generated by the Tauri bundler has everything you need to ship your application to Debian-based Linux distributions, defining your application's icons, generating a Desktop file, and specifying the dependencies `libwebkit2gtk-4.1-0` and `libgtk-3-0`, along with `libappindicator3-1` if your app uses the system tray.
13
12
14
-
### Custom Files
13
+
:::note
14
+
15
+
GUI apps on macOS and Linux do not inherit the `$PATH` from your shell dotfiles (`.bashrc`, `.bash_profile`, `.zshrc`, etc). Check out Tauri's [fix-path-env-rs](https://github.com/tauri-apps/fix-path-env-rs) crate to fix this issue.
16
+
17
+
:::
18
+
19
+
## Limitations
20
+
21
+
Core libraries such as glibc frequently break compatibility with older systems. For this reason, you must build your Tauri application using the oldest base system you intend to support. A relatively old system such as Ubuntu 18.04 is more suited than Ubuntu 22.04, as the binary compiled on Ubuntu 22.04 will have a higher requirement of the glibc version, so when running on an older system, you will face a runtime error like `/usr/lib/libc.so.6: version 'GLIBC_2.33' not found`. We recommend using a Docker container or GitHub Actions to build your Tauri application for Linux.
22
+
23
+
See the issues [tauri-apps/tauri#1355](https://github.com/tauri-apps/tauri/issues/1355) and [rust-lang/rust#57497](https://github.com/rust-lang/rust/issues/57497), in addition to the [AppImage guide](https://docs.appimage.org/reference/best-practices.html#binaries-compiled-on-old-enough-base-system) for more information.
24
+
25
+
## Custom Files
15
26
16
27
Tauri exposes a few configurations for the Debian package in case you need more control.
17
28
@@ -33,3 +44,148 @@ To include custom files in the Debian package, you can provide a list of files o
33
44
}
34
45
}
35
46
```
47
+
48
+
## Cross-Compiling for ARM-based Devices
49
+
50
+
This guide covers manual compilation. Check out our [GitHub Action guide](/distribute/pipelines/github/#arm-runner-compilation) for an example workflow that leverages QEMU to build the app. This will be much slower but will also be able to build AppImages.
51
+
52
+
Manual compilation is suitable when you don't need to compile your application frequently and prefer a one-time setup. The following steps expect you to use a Linux distribution based on Debian/Ubuntu.
53
+
54
+
<Steps>
55
+
56
+
1.#### Install Rust targets for your desired architecture
57
+
58
+
- For ARMv7 (32-bit): `rustup target add armv7-unknown-linux-gnueabihf`
59
+
- For ARMv8 (ARM64, 64-bit): `rustup target add aarch64-unknown-linux-gnu`
60
+
61
+
2.#### Install the corresponding linker for your chosen architecture
62
+
63
+
- For ARMv7: `sudo apt install gcc-arm-linux-gnueabihf`
64
+
- For ARMv8 (ARM64): `sudo apt install gcc-aarch64-linux-gnu`
65
+
66
+
3.#### Open or create the file `<project-root>/.cargo/config.toml` and add the following configurations accordingly
67
+
68
+
```toml
69
+
[target.armv7-unknown-linux-gnueabihf]
70
+
linker = "arm-linux-gnueabihf-gcc"
71
+
72
+
[target.aarch64-unknown-linux-gnu]
73
+
linker = "aarch64-linux-gnu-gcc"
74
+
```
75
+
76
+
4.#### Enable the respective architecture in the package manager
77
+
78
+
- For ARMv7: `sudo dpkg --add-architecture armhf`
79
+
- For ARMv8 (ARM64): `sudo dpkg --add-architecture arm64`
80
+
81
+
5.#### Adjusting Package Sources
82
+
83
+
On Debian, this step should not be necessary, but on other distributions, you might need to edit /etc/apt/sources.list to include the ARM architecture variant. For example on Ubuntu 22.04 add these lines to the bottom of the file (Remember to replace jammy with the codename of your Ubuntu version):
84
+
85
+
```
86
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted
87
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted
88
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy universe
89
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates universe
90
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy multiverse
91
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates multiverse
92
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse
93
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security main restricted
94
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security universe
95
+
deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security multiverse
96
+
```
97
+
98
+
Then, to prevent issues with the main packages, you have to add the correct main architecture to all other lines the file contained beforehand. For standard 64-bit systems you need to add [arch=amd64], the full file on Ubuntu 22.04 then looks similar to this:
99
+
100
+
<ShowSolution>
101
+
102
+
```
103
+
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
104
+
# newer versions of the distribution.
105
+
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted
106
+
# deb-src http://archive.ubuntu.com/ubuntu/ jammy main restricted
107
+
108
+
## Major bug fix updates produced after the final release of the
109
+
## distribution.
110
+
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted
111
+
# deb-src http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted
112
+
113
+
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
114
+
## team. Also, please note that software in universe WILL NOT receive any
115
+
## review or updates from the Ubuntu security team.
116
+
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy universe
7.#### Install the required webkitgtk library for your chosen architecture
162
+
163
+
- For ARMv7: `sudo apt install libwebkit2gtk-4.1-dev:armhf`
164
+
- For ARMv8 (ARM64): `sudo apt install libwebkit2gtk-4.1-dev:arm64`
165
+
166
+
8.#### Install OpenSSL or use a vendored version
167
+
168
+
This is not always required so you may want to proceed first and check if you see errors like `Failed to find OpenSSL development headers`.
169
+
170
+
- Either install the development headers system-wide:
171
+
- For ARMv7: `sudo apt install libssl-dev:armhf`
172
+
- For ARMv8 (ARM64): `sudo apt install libssl-dev:arm64`
173
+
- Or enable the vendor feature for the OpenSSL Rust crate which will affect all other Rust dependencies using the same minor version. You can do so by adding this to the dependencies section in your `Cargo.toml` file:
174
+
175
+
```toml
176
+
openssl-sys = {version = "0.9", features = ["vendored"]}
177
+
```
178
+
179
+
9.#### Set the `PKG_CONFIG_SYSROOT_DIR` to the appropriate directory based on your chosen architecture
180
+
181
+
- For ARMv7: `export PKG_CONFIG_SYSROOT_DIR=/usr/arm-linux-gnueabihf/`
182
+
- For ARMv8 (ARM64): `export PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu/`
183
+
184
+
10.#### Build the app for your desired ARM version
185
+
186
+
- For ARMv7: cargo tauri build --target armv7-unknown-linux-gnueabihf
187
+
- For ARMv8 (ARM64): cargo tauri build --target aarch64-unknown-linux-gnu
188
+
189
+
Choose the appropriate set of instructions based on whether you want to cross-compile your Tauri application for ARMv7 or ARMv8 (ARM64). Please note that the specific steps may vary depending on your Linux distribution and setup.
Copy file name to clipboardExpand all lines: src/content/docs/distribute/dmg.mdx
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,6 +41,12 @@ To create an Apple Disk Image for your app you can use the Tauri CLI and run the
41
41
alt="Standard DMG window"
42
42
/>
43
43
44
+
:::note
45
+
46
+
GUI apps on macOS and Linux do not inherit the `$PATH` from your shell dotfiles (`.bashrc`, `.bash_profile`, `.zshrc`, etc). Check out Tauri's [fix-path-env-rs](https://github.com/tauri-apps/fix-path-env-rs) crate to fix this issue.
47
+
48
+
:::
49
+
44
50
## Window background
45
51
46
52
You can set a custom background image to the DMG installation window with the [`tauri.conf.json > bundle > macOS > dmg > background`] configuration option:
Copy file name to clipboardExpand all lines: src/content/docs/distribute/macos-application-bundle.mdx
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,12 @@ To package your app as a macOS application bundle you can use the Tauri CLI and
21
21
cargo="cargo tauri build --bundles app"
22
22
/>
23
23
24
+
:::note
25
+
26
+
GUI apps on macOS and Linux do not inherit the `$PATH` from your shell dotfiles (`.bashrc`, `.bash_profile`, `.zshrc`, etc). Check out Tauri's [fix-path-env-rs](https://github.com/tauri-apps/fix-path-env-rs) crate to fix this issue.
27
+
28
+
:::
29
+
24
30
## File structure
25
31
26
32
The macOS app bundle is a directory with the following structure:
0 commit comments