11name : " publish Android"
22
33on :
4- push :
5- branches :
6- - main
74 workflow_dispatch :
85
96jobs :
@@ -23,10 +20,15 @@ jobs:
2320
2421 - name : Install Rust stable
2522 uses : dtolnay/rust-toolchain@stable
23+
24+ - name : Install Android targets
25+ run : rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
26+
2627 - name : Install cargo tauri
2728 run : |
2829 cargo install tauri-cli --version "^2.0.0" --locked
29- cargo tauri android init
30+ - name : Tauri Info
31+ run : cargo tauri info
3032
3133 - name : Install frontend dependencies
3234 uses : pnpm/action-setup@v4
@@ -40,12 +42,62 @@ jobs:
4042 distribution : " temurin"
4143 java-version : " 17"
4244
43- - name : Install OpenSSL (if needed)
45+ - name : Cache NDK
46+ id : cache-ndk
47+ uses : actions/cache@v4
48+ with :
49+ # Path where NDK version 29.0.13113456 is expected to be installed by setup-android
50+ path : /usr/local/lib/android/sdk/ndk/29.0.13113456
51+ key : ndk-${{ runner.os }}-29.0.13113456
52+
53+ - name : Setup Android SDK and NDK
54+ uses : android-actions/setup-android@v3
55+ with :
56+ cmdline-tools-version : 12266719 # v16
57+
58+ - name : Install NDK
59+ run : sdkmanager "ndk;29.0.13113456"
60+ - name : Install CMake
61+ run : sdkmanager "cmake;4.0.2"
62+
63+ - name : Set main environment variables
64+ run : |
65+ echo "NDK_HOME=$ANDROID_HOME/ndk/29.0.13113456" >> $GITHUB_ENV
66+ echo "ANDROID_NDK_HOME=$ANDROID_HOME/ndk/29.0.13113456" >> $GITHUB_ENV
67+ echo "ANDROID_NDK=$ANDROID_HOME/ndk/29.0.13113456" >> $GITHUB_ENV
68+ echo "CMAKE=$ANDROID_HOME/cmake/4.0.2/bin/cmake" >> $GITHUB_ENV
69+
70+ echo "TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64" >> $GITHUB_ENV
71+ echo "TARGET=aarch64-linux-android" >> $GITHUB_ENV
72+ echo "API=34" >> $GITHUB_ENV
73+ - name : Set NDK variables
4474 run : |
45- if ! command -v openssl &> /dev/null; then
46- sudo apt-get update
47- sudo apt-get install -y openssl
48- fi
75+ echo "AR=$TOOLCHAIN/bin/llvm-ar" >> $GITHUB_ENV
76+ echo "CC=$TOOLCHAIN/bin/$TARGET$API-clang" >> $GITHUB_ENV
77+ echo "AS=$CC" >> $GITHUB_ENV
78+ echo "CXX=$TOOLCHAIN/bin/$TARGET$API-clang++" >> $GITHUB_ENV
79+ echo "LD=$TOOLCHAIN/bin/ld" >> $GITHUB_ENV
80+ echo "RANLIB=$TOOLCHAIN/bin/llvm-ranlib" >> $GITHUB_ENV
81+ echo "STRIP=$TOOLCHAIN/bin/llvm-strip" >> $GITHUB_ENV
82+
83+ echo "PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_ENV
84+ echo "PATH=$PATH:$TOOLCHAIN/bin" >> $GITHUB_ENV
85+
86+ - name : Initialize Android project
87+ run : cargo tauri android init
88+
89+ - name : Copy build.gradle.kts
90+ run : |
91+ rm src-tauri/gen/android/app/build.gradle.kts
92+ yes | cp -rf scripts/android/build.gradle.kts src-tauri/gen/android/app/build.gradle.kts
93+
94+ - name : Install OpenSSL development packages
95+ run : |
96+ sudo apt-get update
97+ sudo apt-get install -y openssl libssl-dev pkg-config
98+ # Info
99+ openssl version -d
100+ echo "OPENSSL_DIR=/usr/lib/ssl" >> $GITHUB_ENV
49101
50102 - name : Decrypt Android keystore
51103 run : |
@@ -60,11 +112,20 @@ jobs:
60112 password=${{ secrets.KEYSTORE_PASSWORD }}
61113 keyAlias=upload
62114 storeFile=${{ github.workspace }}/upload-keystore.jks
63- EOF
64-
115+ #EOF
65116 - name : Publish Android
66117 env :
67118 ANDROID_KEYSTORE_PASSWORD : ${{ secrets.KEYSTORE_PASSWORD }}
68119 ANDROID_KEY_ALIAS_PASSWORD : ${{ secrets.KEYSTORE_PASSWORD }}
69120 run : |
70121 pnpm publish-android
122+ - name : Upload Android artifact
123+ uses : actions/upload-artifact@v4
124+ with :
125+ # Name of the artifact to upload.
126+ # Optional. Default is 'artifact'
127+ name : app-bundle
128+ # A file, directory or wildcard pattern that describes what to upload
129+ # Required.
130+ #
131+ path : src-tauri/gen/android/app/build/outputs/bundle/universalRelease/app-universal-release.aab
0 commit comments