Métadonnées de l'app au runtime
Lis l'id, la version, le vendeur et l'AUMID de le app depuis ce qu'on a configuré dans le plugin Gradle.
La boîte "À propos" veut 1.2.3. Le crash reporter veut com.example.monapp. L'updater veut le vendeur. Rien de tout ça ne devrait être hardcodé — ni relu sur disque au runtime. NucleusApp expose ce que le plugin Gradle a injecté au build, avec des fallbacks sensés pour ./gradlew run.
TL;DR
- Le singleton
NucleusAppexposeappId,version,vendor,description,appName,aumid,startupTaskId,isConfigured. - Injecté par le plugin via system properties (en
run) et une resource classpath (nucleus/nucleus-app.properties, builds packagés). - Toutes les valeurs sont
String?saufappId(qui tombe sur le nom de la main class) etisConfigured. - Plusieurs modules Nucleus le lisent implicitement —
SingleInstanceManager,taskbar-progress,autolaunch,updater-runtime.
Installation
Fourni avec core-runtime.
Quickstart
import dev.nucleusframework.core.runtime.NucleusApp
@Composable
fun AboutDialog() {
Column {
Text(NucleusApp.appName ?: NucleusApp.appId)
NucleusApp.version?.let { Text("Version $it") }
NucleusApp.vendor?.let { Text("par $it") }
}
}
if (NucleusApp.isConfigured) {
// App packagée
initAutoUpdater()
}Comment ça marche
Le plugin donne à NucleusApp deux canaux d'injection :
- System properties pendant
./gradlew run:-Dnucleus.app.id=MyApp,-Dnucleus.app.version=..., etc. - Resource classpath en build packagé :
nucleus/nucleus-app.propertiesembarqué dans le jar de l'app.
La résolution est first-non-null-wins : system property, puis resource, puis fallback hérité pour appId (main class via sun.java.command, sinon "NucleusApp").
C'est la couture qui fait qu'une ligne dans build.gradle.kts se propage à tous les modules runtime sans câblage manuel. L'identifiant du verrou single-instance, l'AUMID utilisé par Windows pour les badges, le WM_CLASS GraalVM sur Linux, le dossier des marqueurs d'update — tout passe par NucleusApp et reprend ce qu'on a déclaré dans le plugin.
Référence
NucleusApp
| Propriété | Type | Source |
|---|---|---|
appId | String | packageName du plugin. Fallback sur main class ou "NucleusApp". |
appName | String? | Nom d'affichage. |
version | String? | packageVersion du plugin. |
vendor | String? | vendor du plugin. |
description | String? | description du plugin. |
aumid | String? | Application User Model ID (Windows). |
startupTaskId | String? | Task id MSIX utilisé par autolaunch. |
isConfigured | Boolean | true si au moins une source a fourni des valeurs. |
Notes
- Pattern fréquent : brancher sur
NucleusApp.isConfiguredpour gater l'auto-update, la télémétrie, tout ce qu'on ne veux pas voir partir en dev. - Voir
ExecutableRuntimequand il faut distinguer DMG vs Flatpak vs./gradlew run— c'est un autre sujet.