mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-24 22:45:20 +00:00
* feat: Build and release per-architecture APKs This commit modifies the build process to generate separate APKs for different CPU architectures (arm64-v8a, x86_64) and a universal APK. This allows for smaller, optimized downloads for users and provides specific builds for platforms like Chromebooks. Key changes: - In `app/build.gradle.kts`, enables ABI splits to create `arm64-v8a`, `x86_64`, and `universal` APKs during the `assembleRelease` task. - Updates the `release.yml` GitHub Actions workflow to rename and upload each of these APKs as distinct release assets. - Removes the previous `arm64-v8a` only filter to allow for multi-architecture builds. * feat: Allow manual triggering of Android CI workflow This adds the `workflow_dispatch` event to the `android-build.yml` GitHub Actions workflow. This change enables the Android CI pipeline to be run manually from the GitHub UI, in addition to the existing triggers for pushes and pull requests.
108 lines
3.3 KiB
YAML
108 lines
3.3 KiB
YAML
name: Release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*' # Triggers for tags like v1.0.0
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up JDK
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 17
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/gradle-build-action@v2
|
|
with:
|
|
gradle-version: wrapper
|
|
|
|
- name: Cache Gradle files
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
restore-keys: |
|
|
gradle-${{ runner.os }}-
|
|
|
|
- name: Grant execute permission for Gradlew
|
|
run: chmod +x ./gradlew
|
|
|
|
- name: Build Release APKs (with architecture splits)
|
|
run: ./gradlew assembleRelease --no-daemon --stacktrace
|
|
|
|
- name: List APK files
|
|
run: |
|
|
echo "APK files built:"
|
|
find app/build/outputs/apk/release -name "*.apk" -type f -exec ls -lh {} \;
|
|
|
|
- name: Rename APKs for GitHub Release
|
|
run: |
|
|
cd app/build/outputs/apk/release
|
|
[ -f "app-arm64-v8a-release-unsigned.apk" ] && mv app-arm64-v8a-release-unsigned.apk bitchat-android-arm64.apk
|
|
[ -f "app-x86_64-release-unsigned.apk" ] && mv app-x86_64-release-unsigned.apk bitchat-android-x86_64.apk
|
|
[ -f "app-universal-release-unsigned.apk" ] && mv app-universal-release-unsigned.apk bitchat-android-universal.apk
|
|
|
|
- name: DEBUG
|
|
run: |
|
|
set -x
|
|
pwd
|
|
ls -all
|
|
cd app/build/outputs/
|
|
ls -all
|
|
tree || ls -R
|
|
|
|
# Optional: Sign APKs (uncomment and configure secrets when ready)
|
|
# - name: Sign APKs
|
|
# uses: r0adkll/sign-android-release@v1
|
|
# with:
|
|
# releaseDirectory: app/build/outputs/apk/release
|
|
# signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
|
# alias: ${{ secrets.ALIAS }}
|
|
# keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
|
# keyPassword: ${{ secrets.KEY_PASSWORD }}
|
|
|
|
- name: Upload APKs as artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: bitchat-android-release-${{ github.ref_name }}
|
|
path: app/build/outputs/apk/release/*.apk
|
|
retention-days: 30
|
|
if-no-files-found: error
|
|
|
|
release:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Download release artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: bitchat-android-release-${{ github.ref_name }}
|
|
path: release
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: |
|
|
release/bitchat-android-arm64.apk
|
|
release/bitchat-android-x86_64.apk
|
|
release/bitchat-android-universal.apk
|
|
name: Release ${{ github.ref_name }}
|
|
body: |
|
|
**bitchat-android-arm64.apk** - ARM64 (most phones)
|
|
**bitchat-android-x86_64.apk** - x86_64 (Chromebooks, tablets)
|
|
**bitchat-android-universal.apk** - All architectures (fallback)
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|