forked from akai/readest
chore: add android release in github actions (#695)
This commit is contained in:
@@ -56,21 +56,29 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
config:
|
config:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
release: android
|
||||||
|
rust_target: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android
|
||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
|
release: linux
|
||||||
arch: x86_64
|
arch: x86_64
|
||||||
rust_target: x86_64-unknown-linux-gnu
|
rust_target: x86_64-unknown-linux-gnu
|
||||||
- os: ubuntu-22.04-arm
|
- os: ubuntu-22.04-arm
|
||||||
|
release: linux
|
||||||
arch: aarch64
|
arch: aarch64
|
||||||
rust_target: aarch64-unknown-linux-gnu
|
rust_target: aarch64-unknown-linux-gnu
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
|
release: macos
|
||||||
arch: aarch64
|
arch: aarch64
|
||||||
rust_target: x86_64-apple-darwin,aarch64-apple-darwin
|
rust_target: x86_64-apple-darwin,aarch64-apple-darwin
|
||||||
args: '--target universal-apple-darwin'
|
args: '--target universal-apple-darwin'
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
|
release: windows
|
||||||
arch: x86_64
|
arch: x86_64
|
||||||
rust_target: x86_64-pc-windows-msvc
|
rust_target: x86_64-pc-windows-msvc
|
||||||
args: '--target x86_64-pc-windows-msvc'
|
args: '--target x86_64-pc-windows-msvc'
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
|
release: windows
|
||||||
arch: aarch64
|
arch: aarch64
|
||||||
rust_target: aarch64-pc-windows-msvc
|
rust_target: aarch64-pc-windows-msvc
|
||||||
args: '--target aarch64-pc-windows-msvc --bundles nsis'
|
args: '--target aarch64-pc-windows-msvc --bundles nsis'
|
||||||
@@ -94,6 +102,21 @@ jobs:
|
|||||||
node-version: 22
|
node-version: 22
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
|
- name: setup Java (for Android build only)
|
||||||
|
if: matrix.config.release == 'android'
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'zulu'
|
||||||
|
java-version: '17'
|
||||||
|
|
||||||
|
- name: setup Android SDK (for Android build only)
|
||||||
|
if: matrix.config.release == 'android'
|
||||||
|
uses: android-actions/setup-android@v3
|
||||||
|
|
||||||
|
- name: install NDK (for Android build only)
|
||||||
|
if: matrix.config.release == 'android'
|
||||||
|
run: sdkmanager "ndk;27.0.11902837"
|
||||||
|
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
@@ -109,6 +132,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
key: ${{ matrix.config.os }}-cargo-${{ hashFiles('Cargo.lock') }}
|
key: ${{ matrix.config.os }}-cargo-${{ hashFiles('Cargo.lock') }}
|
||||||
|
|
||||||
|
- name: install dependencies (ubuntu only)
|
||||||
|
if: contains(matrix.config.os, 'ubuntu') && matrix.config.release != 'android'
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y pkg-config libfontconfig-dev libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils
|
||||||
|
|
||||||
- name: create .env.local file for Next.js
|
- name: create .env.local file for Next.js
|
||||||
run: |
|
run: |
|
||||||
echo "NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}" >> .env.local
|
echo "NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}" >> .env.local
|
||||||
@@ -116,17 +145,42 @@ jobs:
|
|||||||
echo "NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}" >> .env.local
|
echo "NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}" >> .env.local
|
||||||
echo "NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}" >> .env.local
|
echo "NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}" >> .env.local
|
||||||
echo "NEXT_PUBLIC_APP_PLATFORM=tauri" >> .env.local
|
echo "NEXT_PUBLIC_APP_PLATFORM=tauri" >> .env.local
|
||||||
|
cp .env.local apps/readest-app/.env.local
|
||||||
|
|
||||||
- name: copy .env.local to apps/readest-app
|
- name: build and upload Android apks
|
||||||
run: cp .env.local apps/readest-app/.env.local
|
if: matrix.config.release == 'android'
|
||||||
|
|
||||||
- name: install dependencies (ubuntu only)
|
|
||||||
if: contains(matrix.config.os, 'ubuntu')
|
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
cd apps/readest-app/
|
||||||
sudo apt-get install -y pkg-config libfontconfig-dev libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils
|
rm -rf src-tauri/gen/android
|
||||||
|
pnpm tauri android init
|
||||||
|
pnpm tauri icon ../../data/icons/readest-book.png
|
||||||
|
git checkout .
|
||||||
|
|
||||||
|
pushd src-tauri/gen/android
|
||||||
|
echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties
|
||||||
|
echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties
|
||||||
|
base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks
|
||||||
|
echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties
|
||||||
|
|
||||||
|
popd
|
||||||
|
version=${{ needs.get-release.outputs.release_version }}
|
||||||
|
apk_path=src-tauri/gen/android/app/build/outputs/apk/universal/release
|
||||||
|
universial_apk=Readest_${version}_universal.apk
|
||||||
|
arm64_apk=Readest_${version}_arm64.apk
|
||||||
|
pnpm tauri android build
|
||||||
|
cp ${apk_path}/app-universal-release.apk $universial_apk
|
||||||
|
pnpm tauri android build -t aarch64
|
||||||
|
cp ${apk_path}/app-universal-release.apk $arm64_apk
|
||||||
|
|
||||||
|
echo "Uploading $universial_apk to GitHub release"
|
||||||
|
gh release upload ${{ needs.get-release.outputs.release_tag }} $universial_apk --clobber
|
||||||
|
echo "Uploading $arm64_apk to GitHub release"
|
||||||
|
gh release upload ${{ needs.get-release.outputs.release_tag }} $arm64_apk --clobber
|
||||||
|
env:
|
||||||
|
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/27.0.11902837
|
||||||
|
|
||||||
- uses: tauri-apps/tauri-action@v0
|
- uses: tauri-apps/tauri-action@v0
|
||||||
|
if: matrix.config.release != 'android'
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
|
||||||
|
<!-- AndroidTV support -->
|
||||||
|
<uses-feature android:name="android.software.leanback" android:required="false" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@mipmap/ic_launcher"
|
||||||
|
android:largeHeap="true"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:theme="@style/Theme.readest"
|
||||||
|
android:usesCleartextTraffic="${usesCleartextTraffic}">
|
||||||
|
<activity
|
||||||
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:label="@string/main_activity_title"
|
||||||
|
android:name=".MainActivity"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
<!-- AndroidTV support -->
|
||||||
|
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
<!-- DEEP LINK PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
|
||||||
|
<intent-filter android:autoVerify="true">
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<data android:scheme="http" />
|
||||||
|
<data android:scheme="https" />
|
||||||
|
<data android:host="web.readest.com" />
|
||||||
|
|
||||||
|
</intent-filter>
|
||||||
|
<!-- DEEP LINK PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
<provider
|
||||||
|
android:name="androidx.core.content.FileProvider"
|
||||||
|
android:authorities="${applicationId}.fileprovider"
|
||||||
|
android:exported="false"
|
||||||
|
android:grantUriPermissions="true">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
|
android:resource="@xml/file_paths" />
|
||||||
|
</provider>
|
||||||
|
</application>
|
||||||
|
</manifest>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
Reference in New Issue
Block a user