Files
Noxely/Makefile
T
tuxgyver 8d96a9fdde Cachette devient Noxely, et gagne une page À propos (1.6.0)
Le nom change, et pas seulement à l'écran : identifiant d'application, paquet
Kotlin, dépôt et dossier d'enregistrements suivent, pour qu'il ne subsiste pas
deux noms selon l'endroit où l'on regarde.

Android traite le nouvel identifiant comme une application distincte : une
installation en 1.5.0 ne se mettra pas à jour seule et devra être remplacée.
C'est le prix d'un renommage complet, assumé plutôt que contourné. Les
enregistrements déjà faits ne sont pas perdus, étant dans le stockage partagé,
et le scan continue d'écarter l'ancien dossier pour ne pas les compter deux fois.

L'icône fournie est détourée de son fond blanc avant d'être déclinée : posée
telle quelle, le masque du système aurait redécoupé un badge qui l'est déjà et
laissé du blanc sur les bords. La couleur de fond est échantillonnée dans
l'image, non choisie au jugé.

La page À propos dit enfin ce que l'application fait, ce qu'elle garantit, avec
quoi elle est construite et qui en répond. Sa version vient du manifeste et son
journal du CHANGELOG du dépôt : ni l'un ni l'autre ne peut dériver. La licence
n'étant pas déclarée, la pastille le signale en rouge au lieu d'en inventer une.

Le .gitignore filtre désormais *.apk, et non un motif au nom du projet : c'est
ce motif nommé qui, au renommage, avait laissé entrer 95 Mo d'anciens APK.
2026-09-13 14:00:34 +02:00

123 lines
4.4 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.DEFAULT_GOAL := help
# --- Outillage -------------------------------------------------------------
# Le SDK et adb sont rarement dans le PATH : on les retrouve sans les figer.
ANDROID_SDK ?= $(HOME)/Android/Sdk
ADB ?= $(shell command -v adb 2>/dev/null || echo $(ANDROID_SDK)/platform-tools/adb)
GRADLE := ./gradlew
VERSION := $(shell tr -d '[:space:]' < VERSION)
APPLICATION_ID := fr.tuxgyver.cachette
LAUNCH_ACTIVITY := $(APPLICATION_ID)/.MainActivity
DEBUG_APK := app/build/outputs/apk/debug/app-debug.apk
# Le nom de l'APK de release dépend de la signature (app-release.apk contre
# app-release-unsigned.apk) : on liste le répertoire au lieu de deviner.
RELEASE_DIR := app/build/outputs/apk/release
SIGNED_APK := $(RELEASE_DIR)/app-release.apk
OUTPUT_APK := Noxely-$(VERSION).apk
# --- Publication -----------------------------------------------------------
# Déléguée au script de BorisSkill, qui sait déjà tout faire : résolution du
# jeton ($GITEA_TOKEN, .gitea-token, ~/.config/gitea/token, ~/.git-credentials),
# déduction de l'hôte, du propriétaire et du dépôt depuis le remote 'origin',
# création et poussée du tag, extraction des notes depuis le CHANGELOG.
GITEA_RELEASE ?= $(HOME)/.claude/skills/BorisSkill/scripts/gitea_release.sh
##@ 🔨 Construction
.PHONY: build
build: ## Construit l'APK de debug
$(GRADLE) :app:assembleDebug
@echo "→ $(DEBUG_APK)"
.PHONY: release
release: ## Construit l'APK de release (signé si keystore.properties existe)
@test -f keystore.properties || echo "⚠️ keystore.properties absent : l'APK produit sera non signé"
$(GRADLE) :app:assembleRelease
@if [ -f $(SIGNED_APK) ]; then \
cp $(SIGNED_APK) $(OUTPUT_APK); \
echo "→ $(OUTPUT_APK)"; \
else \
ls -1 $(RELEASE_DIR)/*.apk 2>/dev/null | sed 's/^/→ /'; \
echo " (non signé : non publiable, voir keystore.properties)"; \
fi
.PHONY: apk
apk: ## Affiche le chemin et la taille des APK construits
@ls -lh $(DEBUG_APK) 2>/dev/null || echo "APK de debug : pas encore construit (make build)"
@ls -lh $(RELEASE_DIR)/*.apk 2>/dev/null || echo "APK de release : pas encore construit (make release)"
.PHONY: clean
clean: ## Supprime les artefacts de build
$(GRADLE) clean
##@ 🚀 Déploiement
.PHONY: install
install: ## Installe l'APK de debug sur l'appareil connecté
$(GRADLE) :app:installDebug
.PHONY: run
run: install ## Installe puis lance l'application
$(ADB) shell am start -n $(LAUNCH_ACTIVITY)
.PHONY: uninstall
uninstall: ## Désinstalle l'application de l'appareil connecté
$(ADB) uninstall $(APPLICATION_ID)
##@ 🧪 Qualité
.PHONY: lint
lint: ## Analyse Android Lint (rapport dans app/build/reports/lint-results-debug.html)
$(GRADLE) :app:lintDebug
##@ 🐞 Diagnostic
.PHONY: devices
devices: ## Liste les appareils et émulateurs connectés
$(ADB) devices -l
.PHONY: logcat
logcat: ## Suit les journaux de l'application (Ctrl+C pour arrêter)
$(ADB) logcat --pid=$$($(ADB) shell pidof $(APPLICATION_ID))
.PHONY: crash
crash: ## Affiche la dernière trace de plantage éventuelle
@$(ADB) logcat -d -v brief | grep -A 30 -E "FATAL EXCEPTION" | tail -40 || echo "Aucun plantage enregistré"
##@ 📤 Publication
.PHONY: publish
publish: _check-apk _check-release-script ## Publie l'APK signé en release Gitea (tag + notes + asset)
bash $(GITEA_RELEASE) --version $(VERSION) --asset $(OUTPUT_APK)
.PHONY: publish-dry
publish-dry: _check-apk _check-release-script ## Simule la publication sans rien envoyer
bash $(GITEA_RELEASE) --version $(VERSION) --asset $(OUTPUT_APK) --dry-run
.PHONY: deploy
deploy: release publish ## Construit l'APK signé puis le publie
.PHONY: _check-release-script
_check-release-script:
@test -f $(GITEA_RELEASE) || \
{ echo "❌ Script de publication introuvable : $(GITEA_RELEASE)"; \
echo " Surchargez le chemin : make publish GITEA_RELEASE=/chemin/gitea_release.sh"; exit 1; }
.PHONY: _check-apk
_check-apk:
@test -f $(OUTPUT_APK) || \
{ echo "❌ $(OUTPUT_APK) introuvable — lancez d'abord 'make release' (signature requise)."; exit 1; }
@test $(OUTPUT_APK) -nt VERSION || \
{ echo "❌ $(OUTPUT_APK) est plus ancien que VERSION — relancez 'make release'."; exit 1; }
##@ ℹ️ Aide
.PHONY: help
help: ## Affiche cette aide
@awk 'BEGIN {FS = ":.*?## "} \
/^[a-zA-Z0-9_.-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } \
/^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST)
@echo ""