diff --git a/.github/workflows/_kotlin.yml b/.github/workflows/_kotlin.yml
index 43479355d..43c55ab9a 100644
--- a/.github/workflows/_kotlin.yml
+++ b/.github/workflows/_kotlin.yml
@@ -63,7 +63,7 @@ jobs:
path: |
./kotlin/android/${{ matrix.output-path }}
- name: Upload package to release
- if: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'main' }}
+ if: ${{ matrix.package-type == 'apk' && github.event_name == 'workflow_dispatch' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# mark:next-android-version
@@ -73,7 +73,7 @@ jobs:
cp "${{ matrix.output-path }}" "$ARTIFACT_PATH"
../../scripts/upload/github-release.sh
- name: Distribute release to Firebase App Distribution
- if: ${{ github.event_name == 'workflow_dispatch' || (github.ref == 'refs/heads/main' && contains(github.event.head_commit.modified, 'elixir/VERSION')) }}
+ if: ${{ matrix.package-type == 'aab' && github.event_name == 'workflow_dispatch' }}
env:
FIREBASE_APP_DISTRIBUTION_CREDENTIALS: ${{ secrets.FIREBASE_APP_DISTRIBUTION_CREDENTIALS }}
FIREBASE_CREDENTIALS_PATH: firebase-credentials.json
diff --git a/website/redirects.js b/website/redirects.js
index 0e0d67307..6dc37ee9f 100644
--- a/website/redirects.js
+++ b/website/redirects.js
@@ -1,6 +1,18 @@
// Add all server-side redirects here. Will be loaded by next.config.mjs.
module.exports = [
+ /*
+ *
+ * Android Client
+ *
+ */
+ {
+ source: "/dl/firezone-client-android/latest",
+ destination:
+ // mark:current-android-version
+ "https://www.github.com/firezone/firezone/releases/download/android-client-1.4.0/firezone-android-client-1.4.0.apk",
+ permanent: false,
+ },
/*
*
* Windows GUI Client
diff --git a/website/src/app/kb/client-apps/android-client/readme.mdx b/website/src/app/kb/client-apps/android-client/readme.mdx
index 22697b113..70cc5a5eb 100644
--- a/website/src/app/kb/client-apps/android-client/readme.mdx
+++ b/website/src/app/kb/client-apps/android-client/readme.mdx
@@ -15,7 +15,9 @@ Google Play Store.
## Installation
1. [Download the Firezone app](https://play.google.com/store/apps/details?id=dev.firezone.android)
- from the Google Play Store.
+ from the Google Play Store or
+ [download an APK](https://www.github.com/firezone/firezone/releases) from
+ GitHub.
1. Run the app. The welcome screen will show "Enable VPN Permission" and the
Firezone logo.
1. Tap `Request Permission`. Android will show a dialog saying,
@@ -54,11 +56,14 @@ use its normal DNS and Internet behavior.
## Upgrading
-Updates for the Android client are handled through the Google Play Store.
-Consult the
+Updates for the Android client are handled through the Google Play Store if you
+installed the app from there. Consult the
[Play Store documentation](https://support.google.com/googleplay/answer/113412?hl=en)
for more information on how to update apps on your device.
+If you installed the app from an APK directly, you will need to download and
+install the new APK manually.
+
## Diagnostic logs
Firezone writes log files to the device's memory. These logs stay on the device
diff --git a/website/src/components/Changelog/Android.tsx b/website/src/components/Changelog/Android.tsx
index d79bbe0c3..904d12527 100644
--- a/website/src/components/Changelog/Android.tsx
+++ b/website/src/components/Changelog/Android.tsx
@@ -5,11 +5,19 @@ import Link from "next/link";
import Unreleased from "./Unreleased";
export default function Android() {
+ const downloadLinks = [
+ {
+ href: "https://play.google.com/store/apps/details?id=dev.firezone.android",
+ title: "Download on Google Play",
+ },
+ {
+ href: "https://www.firezone.dev/dl/firezone-client-android/:version",
+ title: "Download APK",
+ },
+ ];
+
return (
-
- Download: - {arches ? ( - arches.map((arch) => ( - - {arch} - - )) - ) : ( + {downloadLinks.map((link) => ( - Download for all platforms + {link.title} - )} + ))}
{children} @@ -113,13 +102,11 @@ function Previous({ } export default function Entries({ - href, - arches, + downloadLinks, title, children, }: { - href: string; - arches?: string[]; + downloadLinks: DownloadLink[]; title: string; children: React.ReactNode; }) { @@ -135,8 +122,7 @@ export default function Entries({ return (