@@ -3,163 +3,154 @@ name: Android Release Build
33on :
44 push :
55 tags :
6- - ' * '
6+ - " * "
77
88env :
9- NODE_VERSION : ' 18 '
10- JAVA_VERSION : ' 17 '
11- KEYSTORE_FILE : ' release.jks'
9+ NODE_VERSION : " 18 "
10+ JAVA_VERSION : " 17 "
11+ KEYSTORE_FILE : " release.jks"
1212
1313jobs :
1414 build :
1515 name : Build and Release Android APKs
1616 runs-on : ubuntu-latest
17-
17+
1818 steps :
19- - name : Checkout repository
20- uses : actions/checkout@v4
21-
22- - name : Setup Node.js
23- uses : actions/setup-node@v4
24- with :
25- node-version : ${{ env.NODE_VERSION }}
26- cache : ' npm'
27-
28- - name : Setup Java JDK
29- uses : actions/setup-java@v4
30- with :
31- distribution : ' temurin'
32- java-version : ${{ env.JAVA_VERSION }}
33-
34- - name : Install dependencies
35- run : npm ci
36-
37- - name : Setup Gradle
38- uses : gradle/gradle-build-action@v2
39-
40- - name : Make gradlew executable
41- run : chmod +x android/gradlew
42-
43- - name : Decode Keystore
44- env :
45- KEYSTORE_BASE64 : ${{ secrets.KEYSTORE_BASE64 }}
46- run : |
47- echo $KEYSTORE_BASE64 | base64 -d > android/app/${{ env.KEYSTORE_FILE }}
48-
49- - name : Generate keystore.properties
50- run : |
51- cat <<EOF > android/keystore.properties
52- storePassword=${{ secrets.KEYSTORE_PASSWORD }}
53- keyPassword=${{ secrets.KEY_PASSWORD }}
54- keyAlias=${{ secrets.KEY_ALIAS }}
55- storeFile=${{ env.KEYSTORE_FILE }}
56- EOF
57-
58- - name : Build Release APKs
59- run : |
60- cd android
61- ./gradlew assembleRelease
62-
63- - name : Get tag name
64- id : tag
65- run : echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
66-
67- - name : Create Release
68- id : create_release
69- uses : actions/create-release@v1
70- env :
71- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
72- with :
73- tag_name : ${{ steps.tag.outputs.tag }}
74- release_name : Release ${{ steps.tag.outputs.tag }}
75- draft : false
76- prerelease : false
77- body : |
78- # 🚀 Alternate ${{ steps.tag.outputs.tag }} – Feature & Improvement Release
79-
80- ## ✨ What's New in ${{ steps.tag.outputs.tag }}
81-
82- - **Search Functionality:**
83- Added search for contacts and country selector for faster access.
84-
85- - **Multi-Delete & Contact Sharing:**
86- Added multi-delete and selection-based contact sharing features for easier contact management.
87-
88- - **Performance Improvements:**
89- Enhanced app speed and responsiveness.
90-
91- - **Bug Fixes:**
92- Fixed various issues for improved stability.
93-
94- - **UI Enhancements:**
95- Refined and modernized the user interface for a better experience.
96-
97- ## 📦 Download Options
98-
99- Choose the APK that matches your device architecture:
100-
101- - **ARM64 (64-bit)** – Recommended for most modern devices
102- - **ARM (32-bit)** – For older Android devices
103- - **x86 (64-bit)** – For Intel-based Android devices/emulators
104- - **x86 (32-bit)** – For older Intel-based devices
105-
106- ## 🔧 Installation
107-
108- 1. Download the appropriate APK for your device
109- 2. Enable "Install from unknown sources" in your Android settings
110- 3. Install the APK file
111-
112- ## 📋 System Requirements
113-
114- - Android 7.0 (API level 24) or higher
115- - Permissions: Contacts, Phone
116-
117- - name : Upload arm64-v8a APK
118- uses : actions/upload-release-asset@v1
119- env :
120- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
121- with :
122- upload_url : ${{ steps.create_release.outputs.upload_url }}
123- asset_path : android/app/build/outputs/apk/release/app-arm64-v8a-release.apk
124- asset_name : alternate-arm64-v8a-${{ steps.tag.outputs.tag }}.apk
125- asset_content_type : application/vnd.android.package-archive
126-
127- - name : Upload armeabi-v7a APK
128- uses : actions/upload-release-asset@v1
129- env :
130- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
131- with :
132- upload_url : ${{ steps.create_release.outputs.upload_url }}
133- asset_path : android/app/build/outputs/apk/release/app-armeabi-v7a-release.apk
134- asset_name : alternate-armeabi-v7a-${{ steps.tag.outputs.tag }}.apk
135- asset_content_type : application/vnd.android.package-archive
136-
137- - name : Upload x86_64 APK
138- uses : actions/upload-release-asset@v1
139- env :
140- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
141- with :
142- upload_url : ${{ steps.create_release.outputs.upload_url }}
143- asset_path : android/app/build/outputs/apk/release/app-x86_64-release.apk
144- asset_name : alternate-x86_64-${{ steps.tag.outputs.tag }}.apk
145- asset_content_type : application/vnd.android.package-archive
146-
147- - name : Upload x86 APK
148- uses : actions/upload-release-asset@v1
149- env :
150- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
151- with :
152- upload_url : ${{ steps.create_release.outputs.upload_url }}
153- asset_path : android/app/build/outputs/apk/release/app-x86-release.apk
154- asset_name : alternate-x86-${{ steps.tag.outputs.tag }}.apk
155- asset_content_type : application/vnd.android.package-archive
156-
157- - name : Upload metadata
158- uses : actions/upload-release-asset@v1
159- env :
160- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
161- with :
162- upload_url : ${{ steps.create_release.outputs.upload_url }}
163- asset_path : android/app/build/outputs/apk/release/output-metadata.json
164- asset_name : output-metadata.json
165- asset_content_type : application/json
19+ - name : Checkout repository
20+ uses : actions/checkout@v4
21+
22+ - name : Setup Node.js
23+ uses : actions/setup-node@v4
24+ with :
25+ node-version : ${{ env.NODE_VERSION }}
26+ cache : " npm"
27+
28+ - name : Setup Java JDK
29+ uses : actions/setup-java@v4
30+ with :
31+ distribution : " temurin"
32+ java-version : ${{ env.JAVA_VERSION }}
33+
34+ - name : Install dependencies
35+ run : npm ci
36+
37+ - name : Setup Gradle
38+ uses : gradle/gradle-build-action@v2
39+
40+ - name : Make gradlew executable
41+ run : chmod +x android/gradlew
42+
43+ - name : Decode Keystore
44+ env :
45+ KEYSTORE_BASE64 : ${{ secrets.KEYSTORE_BASE64 }}
46+ run : |
47+ echo $KEYSTORE_BASE64 | base64 -d > android/app/${{ env.KEYSTORE_FILE }}
48+
49+ - name : Generate keystore.properties
50+ run : |
51+ cat <<EOF > android/keystore.properties
52+ storePassword=${{ secrets.KEYSTORE_PASSWORD }}
53+ keyPassword=${{ secrets.KEY_PASSWORD }}
54+ keyAlias=${{ secrets.KEY_ALIAS }}
55+ storeFile=${{ env.KEYSTORE_FILE }}
56+ EOF
57+
58+ - name : Build Release APKs
59+ run : |
60+ cd android
61+ ./gradlew assembleRelease
62+
63+ - name : Get tag name
64+ id : tag
65+ run : echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
66+
67+ - name : Create Release
68+ id : create_release
69+ uses : actions/create-release@v1
70+ env :
71+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
72+ with :
73+ tag_name : ${{ steps.tag.outputs.tag }}
74+ release_name : Release ${{ steps.tag.outputs.tag }}
75+ draft : false
76+ prerelease : false
77+ body : |
78+ # 🚀 Alternate ${{ steps.tag.outputs.tag }} – Feature & Improvement Release
79+
80+ ## ✨ What's New in ${{ steps.tag.outputs.tag }}
81+
82+ - **Long Press to Copy Contact Info:**
83+ You can now long press on a contact to quickly copy their information.
84+
85+ - **Bug Fixes:**
86+ Minor bug fixes and stability improvements.
87+
88+ ## 📦 Download Options
89+
90+ Choose the APK that matches your device architecture:
91+
92+ - **ARM64 (64-bit)** – Recommended for most modern devices
93+ - **ARM (32-bit)** – For older Android devices
94+ - **x86 (64-bit)** – For Intel-based Android devices/emulators
95+ - **x86 (32-bit)** – For older Intel-based devices
96+
97+ ## 🔧 Installation
98+
99+ 1. Download the appropriate APK for your device
100+ 2. Enable "Install from unknown sources" in your Android settings
101+ 3. Install the APK file
102+
103+ ## 📋 System Requirements
104+
105+ - Android 7.0 (API level 24) or higher
106+ - Permissions: Contacts, Phone
107+
108+ - name : Upload arm64-v8a APK
109+ uses : actions/upload-release-asset@v1
110+ env :
111+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
112+ with :
113+ upload_url : ${{ steps.create_release.outputs.upload_url }}
114+ asset_path : android/app/build/outputs/apk/release/app-arm64-v8a-release.apk
115+ asset_name : alternate-arm64-v8a-${{ steps.tag.outputs.tag }}.apk
116+ asset_content_type : application/vnd.android.package-archive
117+
118+ - name : Upload armeabi-v7a APK
119+ uses : actions/upload-release-asset@v1
120+ env :
121+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
122+ with :
123+ upload_url : ${{ steps.create_release.outputs.upload_url }}
124+ asset_path : android/app/build/outputs/apk/release/app-armeabi-v7a-release.apk
125+ asset_name : alternate-armeabi-v7a-${{ steps.tag.outputs.tag }}.apk
126+ asset_content_type : application/vnd.android.package-archive
127+
128+ - name : Upload x86_64 APK
129+ uses : actions/upload-release-asset@v1
130+ env :
131+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
132+ with :
133+ upload_url : ${{ steps.create_release.outputs.upload_url }}
134+ asset_path : android/app/build/outputs/apk/release/app-x86_64-release.apk
135+ asset_name : alternate-x86_64-${{ steps.tag.outputs.tag }}.apk
136+ asset_content_type : application/vnd.android.package-archive
137+
138+ - name : Upload x86 APK
139+ uses : actions/upload-release-asset@v1
140+ env :
141+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
142+ with :
143+ upload_url : ${{ steps.create_release.outputs.upload_url }}
144+ asset_path : android/app/build/outputs/apk/release/app-x86-release.apk
145+ asset_name : alternate-x86-${{ steps.tag.outputs.tag }}.apk
146+ asset_content_type : application/vnd.android.package-archive
147+
148+ - name : Upload metadata
149+ uses : actions/upload-release-asset@v1
150+ env :
151+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
152+ with :
153+ upload_url : ${{ steps.create_release.outputs.upload_url }}
154+ asset_path : android/app/build/outputs/apk/release/output-metadata.json
155+ asset_name : output-metadata.json
156+ asset_content_type : application/json
0 commit comments