Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iterate on the release script and workflow #2324

Merged
merged 5 commits into from
Jan 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 36 additions & 6 deletions docs/install_from_github_release.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,43 @@ This document explains how to install Element X Android from a Github Release.

<!--- TOC -->

* [Requirements](#requirements)
* [Steps](#steps)
* [I already have the application on my phone](#i-already-have-the-application-on-my-phone)
* [Installing the universal APK](#installing-the-universal-apk)
* [Instructions](#instructions)
* [Steps](#steps)
* [I already have the application on my phone](#i-already-have-the-application-on-my-phone)
jmartinesp marked this conversation as resolved.
Show resolved Hide resolved
* [Installing from the App Bundle](#installing-from-the-app-bundle)
* [Requirements](#requirements)
* [Steps](#steps)
* [I already have the application on my phone](#i-already-have-the-application-on-my-phone)

<!--- END -->

## Requirements
## Installing the universal APK

### Instructions

The easiest way to install the application from a GitHub release is to use the universal APK which is attached to the release. This APK is compatible with all Android devices, but it is not optimized for any of them. So it may not be as fast as it could be on your device, and it may not be as small as it could be.

Alternatively, you can generate an APK that is optimized for your device. This is explained in the next section.

### Steps

- Open the GitHub release that you want to install from using the Web browser of your phone.
- Download the APK
- Open the APK file from the download notification, or from the file manager
- Follow the steps to install the application

### I already have the application on my phone

If the application was already installed on your phone, there are several cases:

- it was installed from the PlayStore, you can install the universal APK as long as the version is more recent. The existing data should not be lost.
- it was installed from a previous GitHub release, this is like an application upgrade.
- it was installed from a more recent GitHub release, or from the PlayStore with a later version, you will have to uninstall it first.

## Installing from the App Bundle

### Requirements

The Github release will contain an Android App Bundle (with `aab` extension) file, unlike in the Element Android project where releases directly provide the APKs. So there are some steps to perform to generate and sign App Bundle APKs. An APK suitable for the targeted device will then be generated.

Expand All @@ -31,7 +61,7 @@ You will also need to install [bundletool](https://developer.android.com/studio/
brew install bundletool
```

## Steps
### Steps

1. Open the GitHub release that you want to install from https://github.com/element-hq/element-x-android/releases
2. Download the asset `app-release-signed.aab`
Expand All @@ -55,7 +85,7 @@ bundletool install-apks --apks=./tmp/elementx.apks

That's it, the application should be installed on your device, you can start it from the launcher icon.

## I already have the application on my phone
### I already have the application on my phone

If the application was already installed on your phone, there are several cases:

Expand Down
20 changes: 17 additions & 3 deletions tools/release/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,8 @@ printf "Unzipping the artifact...\n"

unzip ${targetPath}/elementx-app-gplay-bundle-unsigned.zip -d ${targetPath}

unsignedBundlePath="${targetPath}/app-release.aab"
signedBundlePath="${targetPath}/app-release-signed.aab"
unsignedBundlePath="${targetPath}/app-gplay-release.aab"
signedBundlePath="${targetPath}/app-gplay-release-signed.aab"

printf "\n================================================================================\n"
printf "Signing file ${unsignedBundlePath} with build-tools version ${buildToolsVersion} for min SDK version ${minSdkVersion}...\n"
Expand Down Expand Up @@ -291,6 +291,19 @@ else
printf "APKs will not be generated!\n"
fi

printf "\n================================================================================\n"
printf "Create the open testing release on GooglePlay.\n"

printf "On GooglePlay console, go the the open testing section and click on \"Create new release\" button, then:\n"
printf " - upload the file ${signedBundlePath}.\n"
printf " - copy the release note from the fastlane file.\n"
printf " - download the universal APK, to be able to provide it to the GitHub release: click on the right arrow next to the \"App bundle\", then click on the \"Download\" tab, and download the \"Signed, universal APK\".\n"
printf " - submit the release.\n"
read -p "Press enter to continue. "

printf "You can then go to \"Publishing overview\" and send the new release for a review by Google.\n"
read -p "Press enter to continue. "

printf "\n================================================================================\n"
githubCreateReleaseLink="https://github.com/element-hq/element-x-android/releases/new?tag=v${version}&title=Element%20X%20Android%20v${version}&body=${changelogUrlEncoded}"
printf "Creating the release on gitHub.\n"
Expand All @@ -299,11 +312,12 @@ printf "Then\n"
printf " - copy paste the section of the file CHANGES.md for this release (if not there yet)\n"
printf " - click on the 'Generate releases notes' button\n"
printf " - Add the file ${signedBundlePath} to the GitHub release.\n"
printf " - Add the universal APK, downloaded from the GooglePlay console to the GitHub release.\n"
read -p ". Press enter to continue. "

printf "\n================================================================================\n"
printf "Message for the Android internal room:\n\n"
message="@room Element X Android ${version} is ready to be tested. You can get it from https://github.com/element-hq/element-x-android/releases/tag/v${version}. Installation instructions can be found [here](https://github.com/element-hq/element-x-android/blob/develop/docs/install_from_github_release.md). Please report any feedback. Thanks!"
message="@room Element X Android ${version} is ready to be tested. You can get it from https://github.com/element-hq/element-x-android/releases/tag/v${version}. You can install the universal APK. If you want to install the application from the app bundle, you can follow instructions [here](https://github.com/element-hq/element-x-android/blob/develop/docs/install_from_github_release.md). Please report any feedback. Thanks!"
printf "${message}\n\n"

if [[ -z "${elementBotToken}" ]]; then
Expand Down
Loading