ministero-salute / it-dgc-verificaC19-android

VerificaC19 is the official Italian customization of the EU Digital COVID Certificate Verifier App for the Android Operating System
https://www.dgc.gov.it
Apache License 2.0
101 stars 54 forks source link

Errore con BuildConfig dentro il file "WhiteLabelApplication.kt" #286

Closed LucaDavolio closed 2 years ago

LucaDavolio commented 2 years ago

Ciao, ho appena scaricato il progetto con l'ultima versione dell'applicazione e, nonostante abbia scaricato da zero anche sdk, certlogic e core per sicurezza, ricevo subito un errore da il file WhiteLabelApplication.kt a causa di BuildConfig.VERSION_NAME che non viene trovato; ho controllato e nella versione precedente del progetto non c'era. Possibile che non sia proprio stato dichiarato e per questo da errore?

rawmain commented 2 years ago

Ciao @LucaDavolio

ricevo subito un errore da il file WhiteLabelApplication.kt a causa di BuildConfig.VERSION_NAME che non viene trovato; ho controllato e nella versione precedente del progetto non c'era. Possibile che non sia proprio stato dichiarato e per questo da errore?

La reference BuildConfig.VERSION_NAME non è affatto una novità di progetto, essendo presente/usata sin dalla release 1.1.2 (Settembre 2021) in FirstActivity.kt - ved. funzione checkAppMinimumVersion per controllo obsolescenza versione app.

Peraltro, il commit ccfe7e7 - promosso in develop branch 5gg fa (quindi dopo la finalizzazione del codice release app/UI 1.2.9) - si limita solo ad aggiungere tale reference in WhiteLabelApplication.kt per ridefinire appVersion in User Agent da BuildConfig.SDK_VERSION (definizione di base in DGC-SDK) a BuildConfig.VERSION_NAME.

Infatti, il passaggio bundle classes (nel quale avviene effettivamente l'allineamento app/DGC-SDK per le reference BuildConfig) è esente da errori, come puoi vedere anche dall'immagine allegata.

2022-03-21 (6)


Visto che è evidentemente una questione specifica del tuo ambiente di build, effettua un clean di build/progetto + cache, quindi riavvia il progetto & ricontrolla.

Qualora dovessi continuare a riscontrare errore di risoluzione/bundle per la classe BuildConfig in fase di build, sarebbe indicato che procedessi a ricreare da zero il progetto con diverso nome directory app, onde esser certo di escludere residui/conflitti di attività con codice anteriore.

LucaDavolio commented 2 years ago

Nonostante abbia ricreato il progetto da zero in un'altra directory, l'errore è sempre lo stesso: non trova BuildConfig, riusciresti a dirmi in che file viene dichiarato in modo che io possa controllare se è presente nel mio progetto e se, come immagino, non c'è, possa capire il perché ed importarlo manualmente. Grazie in anticipo.

rawmain commented 2 years ago

Ciao @LucaDavolio

Nonostante abbia ricreato il progetto da zero in un'altra directory, l'errore è sempre lo stesso: non trova BuildConfig

La classe BuildConfig referenziata da it.ministerodellasalute.verificaC19.BuildConfig NON è dichiarata staticamente.

Viene generata dinamicamente da gradle nella fase di Build \ Make Project - in funzione delle costanti di config dichiarate staticamente per type/variant di build (quindi debug o release in questo caso).

BuildConfig.VERSION_NAME viene infatti generato in funzione della dichiarazione statica versionName "1.2.9" in app\build.gradle . Lo ritrovi appunto nel codice intermedio Java compilato/generato - app\build\generated\source\BuildConfig\<variant>\it\ministerodellasalute\verificaC19\BuildConfig.java .

\ Nel caso p.es. di build del progetto in variant/type release, questo è il relativo codice - generato dinamicamente da gradle :

/**
 * Automatically generated file. DO NOT MODIFY
 */
package it.ministerodellasalute.verificaC19;

public final class BuildConfig {
  public static final boolean DEBUG = false;
  public static final String APPLICATION_ID = "it.ministerodellasalute.verificaC19";
  public static final String BUILD_TYPE = "release";
  public static final int VERSION_CODE = 665;
  public static final String VERSION_NAME = "1.2.9";
  // Field from default config.
  public static final String BASE_LINK_URL = "https://www.dgc.gov.it";
  // Field from build type: release
  public static final String FAQ_URL = "https://www.dgc.gov.it/web/app.html";
  // Field from build type: release
  public static final String PRIVACY_POLICY_URL = "https://www.dgc.gov.it/web/pn.html";
  // Field from build type: release
  public static final String VERIFICATION_FAQ_URL = "https://www.dgc.gov.it/web/faq.html#verifica19";
}

\ La sua indicazione come unresolved reference nella fase preliminare statica di sync/indexing - cioè prima di procedere con la compilazione del progetto - non costituisce affatto condizione di build error, a patto che ovviamente siano correttamente definiti/presenti i valori statici richiamati da app\build.gradle .


Se invece - pur avendo correttamente clonato le branch repo dei progetti (verifier-app \ DGC-SDK \ core) - non riesci proprio a portare a compimento la fase di Build \ Make Project, ottenendo KO build prima della generazione di BuildConfig.java, allora - in tal caso - c'è un problema specifico del tuo ambiente di build.

In tali situazioni specifiche si verifica appunto prima con un semplice flush/reset di build e cache, onde cancellare residui/disallineamenti da precedenti attività di build.

Qualora questo non sia ancora risolutivo, si procede di tabula rasa & nuova clonazione del progetto con diversa rinomina della directory project app, onde escludere anche eventuali situazioni derivanti p.es. da tuoi aggiornamenti autonomi (e non dovuti) della versione di gradle e/o dei plugin di progetto.

LucaDavolio commented 2 years ago

Grazie mille, ho risolto il problema. Come mi aveva detto lei l'indicazione di unresolved reference nella fase preliminare statica di sync/indexing non costituiva un build error.