forked from rusnakdima/AllInOneToolkitV2
-
Notifications
You must be signed in to change notification settings - Fork 0
192 lines (165 loc) · 6.72 KB
/
Copy pathandroid.yml
File metadata and controls
192 lines (165 loc) · 6.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
name: Builder for Android
on:
push:
tags:
- "v*"
jobs:
build-android:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: "blacksmith-2vcpu-ubuntu-2204"
args: ""
runs-on: ${{ matrix.platform }}
env:
NAME_APP: allinonetoolkitv2
APP_HOME_FOLDER: AllInOneToolkitV2
steps:
- uses: actions/checkout@v4
- name: Create .env file
run: |
echo "NAME_APP=allinonetoolkitv2" > src-tauri/.env
echo "APP_HOME_FOLDER=AllInOneToolkitV2" >> src-tauri/.env
- name: Free up disk space
run: |
echo "Freeing up disk space..."
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/share/boost || true
# Skip AGENT_TOOLSDIRECTORY removal in local environments
if [ -n "$AGENT_TOOLSDIRECTORY" ] && [ "$AGENT_TOOLSDIRECTORY" != "/opt/hostedtoolcache" ]; then
sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true
fi
sudo rm -rf /usr/share/swift || true
sudo rm -rf /usr/local/.ghcup || true
sudo apt-get clean || true
docker system prune -a -f || true
df -h
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin"
cache: gradle
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'blacksmith-2vcpu-ubuntu-2204'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf lib32z1 lib32stdc++6 unzip wget
- name: Install Android SDK
run: |
export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
mkdir -p "$ANDROID_HOME"
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_HOME/cmdline-tools
mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest
rm commandlinetools-linux-11076708_latest.zip
echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=$ANDROID_HOME" >> $GITHUB_ENV
echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH
echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH
- name: Accept Android SDK licenses and install components
run: |
yes | sdkmanager --licenses
sdkmanager "platform-tools" "build-tools;34.0.0" "platforms;android-34" "ndk;25.1.8937393"
echo "NDK_HOME=$ANDROID_HOME/ndk/25.1.8937393" >> $GITHUB_ENV
- name: Cache Gradle dependencies
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
~/.android/build-cache
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Add Android Rust targets
run: |
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: "./src-tauri -> target"
- name: Install frontend dependencies
run: bun install
- name: Clean up before build
run: |
echo "Cleaning up before build..."
# Clean npm cache
npm cache clean --force
# Clean gradle cache if exists
rm -rf ~/.gradle/daemon/
# Clean any existing build artifacts (but preserve incremental compilation cache)
rm -rf src-tauri/gen/android/app/build/
# Only clean release artifacts, keep debug and incremental cache
rm -rf src-tauri/target/release/
df -h
- name: Grant execute permission for gradlew
run: chmod +x ./src-tauri/gen/android/gradlew
- name: Setup Android Keystore
run: |
cd src-tauri/gen/android
# Use defaults for local testing if secrets are not provided
KEY_ALIAS="${{ secrets.ANDROID_KEY_ALIAS }}"
KEY_PASSWORD="${{ secrets.ANDROID_KEY_PASSWORD }}"
if [ -z "$KEY_ALIAS" ]; then
KEY_ALIAS="androiddebugkey"
fi
if [ -z "$KEY_PASSWORD" ]; then
KEY_PASSWORD="android"
fi
echo "keyAlias=$KEY_ALIAS" > keystore.properties
echo "password=$KEY_PASSWORD" >> keystore.properties
echo "storeFile=$(pwd)/app/keystore.jks" >> keystore.properties
# Create keystore from GitHub secrets (if provided)
if [ -n "${{ secrets.ANDROID_KEY_BASE64 }}" ]; then
base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $(pwd)/app/keystore.jks
echo "Using provided keystore"
else
# Generate a debug keystore for CI builds
echo "Generating debug keystore for CI"
keytool -genkeypair -v -keystore $(pwd)/app/keystore.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-storepass "$KEY_PASSWORD" -keypass "$KEY_PASSWORD" \
-alias "$KEY_ALIAS" \
-dname "CN=AllInOneToolkit, OU=TCS, O=TechCraft Solutions, L=New York, ST=Washington, C=US"
fi
- name: Build APK
run: |
echo "Building APK..."
chmod +x ./scripts/build-optimized.sh
FORCE_BUILD=true ./scripts/build-optimized.sh build android release
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: android-apk
path: src-tauri/gen/android/app/build/outputs/apk/universal/release/*.apk
- name: Upload AAB artifact
uses: actions/upload-artifact@v4
with:
name: android-aab
path: src-tauri/gen/android/app/build/outputs/bundle/universalRelease/*.aab
- name: Upload to Existing Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.ref_name }}
files: |
src-tauri/gen/android/app/build/outputs/apk/universal/release/*.apk
src-tauri/gen/android/app/build/outputs/bundle/universalRelease/*.aab
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}