7 Commits

Author SHA1 Message Date
Ujwal Chapagain 3d74e30360 Update release-apk.yml 2026-06-13 15:01:02 +05:45
Ujwal Chapagain 3ec122c03b Update release-apk.yml 2026-06-13 14:54:27 +05:45
Ujwal Chapagain 99a581ad01 Update release-apk.yml 2026-06-13 14:43:02 +05:45
Ujwal Chapagain 65796c8e9e SIGN the apk 2026-06-13 14:04:18 +05:45
Ujwal Chapagain 6d48682b39 Update README.md 2026-06-13 13:35:51 +05:45
Ujwal Chapagain 7cb4d62cbe update screenshot 2026-06-13 13:33:57 +05:45
Ujwal223 335f6467bc Add popup.json 2026-06-13 13:30:01 +05:45
3 changed files with 83 additions and 4 deletions
+71 -2
View File
@@ -1,4 +1,5 @@
name: Build APK and Create GitHub Release
on:
workflow_dispatch:
inputs:
@@ -6,28 +7,35 @@ on:
description: "Release version without leading v. Example: 1.0.0. Leave empty to read the top CHANGELOG heading."
required: false
type: string
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Java 17
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "17"
- name: Set up Android SDK
uses: android-actions/setup-android@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- name: Install required Android SDK packages
shell: bash
run: |
@@ -36,9 +44,11 @@ jobs:
"platform-tools" \
"platforms;android-35" \
"build-tools;34.0.0" \
"build-tools;35.0.0" \
"build-tools;35.0.0"
- name: Get dependencies
run: flutter pub get
- name: Resolve version and tag
id: meta
shell: bash
@@ -53,21 +63,79 @@ jobs:
TAG="v${VERSION}"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
- name: Extract release notes from CHANGELOG.md
shell: bash
env:
VERSION: ${{ steps.meta.outputs.version }}
run: python3 .github/scripts/get_notes.py
- name: Decode Android keystore
shell: bash
run: |
set -euo pipefail
mkdir -p android/app
# tr -d strips any newlines/spaces introduced when the secret was stored
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" \
| tr -d '[:space:]' \
| base64 --decode > android/app/upload-keystore.jks
chmod 600 android/app/upload-keystore.jks
echo "Keystore written: $(wc -c < android/app/upload-keystore.jks) bytes"
- name: Create Android key.properties
shell: bash
env:
KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
run: |
set -euo pipefail
# Trim any accidental whitespace/newlines from secret values
KS_PASS="$(printf '%s' "${KEYSTORE_PASSWORD}" | tr -d '[:space:]')"
K_PASS="$(printf '%s' "${KEY_PASSWORD}" | tr -d '[:space:]')"
K_ALIAS="$(printf '%s' "${KEY_ALIAS}" | tr -d '[:space:]')"
# Absolute path prevents Gradle from misresolving a relative storeFile
KEYSTORE_PATH="${GITHUB_WORKSPACE}/android/app/upload-keystore.jks"
{
printf 'storePassword=%s\n' "${KS_PASS}"
printf 'keyPassword=%s\n' "${K_PASS}"
printf 'keyAlias=%s\n' "${K_ALIAS}"
printf 'storeFile=%s\n' "${KEYSTORE_PATH}"
} > android/key.properties
- name: Verify keystore
shell: bash
env:
KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
run: |
set -euo pipefail
KS_PASS="$(printf '%s' "${KEYSTORE_PASSWORD}" | tr -d '[:space:]')"
echo "=== Keystore file ==="
ls -lh android/app/upload-keystore.jks
file android/app/upload-keystore.jks
echo ""
echo "=== key.properties keys (values hidden) ==="
cut -d'=' -f1 android/key.properties
echo ""
echo "=== Keystore verification via keytool ==="
keytool -list \
-keystore android/app/upload-keystore.jks \
-storepass "${KS_PASS}" \
2>&1 | grep -vE "^(Warning|$)"
- name: Build release APK
run: flutter build apk --release
- name: Rename APK
run: mv build/app/outputs/flutter-apk/app-release.apk build/app/outputs/flutter-apk/focusgram-release.apk
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: focusgram-apk-${{ steps.meta.outputs.tag }}
path: build/app/outputs/flutter-apk/focusgram-release.apk
if-no-files-found: error
- name: Create Git tag
shell: bash
env:
@@ -82,6 +150,7 @@ jobs:
fi
git tag -a "${TAG}" -m "Release ${TAG}"
git push origin "${TAG}"
- name: Create GitHub Release
uses: softprops/action-gh-release@v3
with:
@@ -92,4 +161,4 @@ jobs:
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+2 -2
View File
@@ -28,7 +28,7 @@ FocusGram is an Android-only app that loads the Instagram website with the distr
>
> [![Buy Me a Momo](https://img.shields.io/badge/-%F0%9F%A5%9F%20Buy%20Me%20a%20Momo-FF6B35?style=for-the-badge&labelColor=1a1a1a)](https://buymemomo.com/ujwal)
<img width="1920" height="1080" alt="FocusGram App Screenshots" src="https://github.com/user-attachments/assets/cffd4012-4cf3-4ba8-aa1a-883e1f85478e" />
<img width="1920" height="1080" alt="FocusGram App Screenshots" src="https://raw.githubusercontent.com/Ujwal223/FocusGram/refs/heads/main/assets/images/app-demo.png" />
---
@@ -168,4 +168,4 @@ Copyright © 2025-2026 Ujwal Chapagain
Licensed under the [GNU Affero General Public License v3.0](LICENSE). You are free to use, modify, and distribute this software under the same terms.
FocusGram is built and maintained by [Ujwal Chapagain](https://github.com/Ujwal223) under AGPL-3.0, Thanks for Reading README.
FocusGram is built and maintained by [Ujwal Chapagain](https://github.com/Ujwal223) under AGPL-3.0, Thanks for Reading README.
+10
View File
@@ -0,0 +1,10 @@
{
"show": false,
"id": "popup_005",
"header": "FOCUSGRAM UPDATE DISCONTINUITION!!",
"body": "Due to NO Support from community, it is being difficult for me to maintain this project, due to which, Next coming update might be the LAST update for FocusGram. THANKS FOR UNDERSTANDING! ",
"max_shows": 6,
"button_text": "OKAY..."
}