ministero-salute / it-dgc-verificac19-sdk-android

Digital Covid Certificate SDK
Apache License 2.0
57 stars 30 forks source link

Unresolved reference: LoadKeysWorker #29

Closed andrearavalli closed 1 year ago

andrearavalli commented 3 years ago

Buonasera, seguendo pedissequamente l'how to si incappa in questo errore. Non ho fatto altro che avere i 4 progetti allo stesso livello e, dopo aver compilato copiando il file "AppConfig.kt" (vedi altro issue che ho aperto) all'interno del progetto ho provato ad inizializzare il WorkManager come da HowTo. Purtroppo sono incappato in questo errore.

sirol81 commented 3 years ago

anche io non riesco a capire bene come inizializzare il workmanager LoadKeysWorker come da istruzioni. Ho provato con il namespace esteso it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker ma ministerodellasalute non viene riconosciuto neanche dall'intellisense (alt+invio)

Sarebbe comodo avere un working example disponibile

Untitled

andrearavalli commented 3 years ago

anche io non riesco a capire bene come inizializzare il workmanager LoadKeysWorker come da istruzioni. Ho provato con il namespace esteso it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker ma ministerodellasalute non viene riconosciuto neanche dall'intellisense (alt+invio)

Sarebbe comodo avere un working example disponibile

Untitled

semplicemente non funziona fatta così com è l' """""""""sdk""""""""". Ci ho sbattuto la testa una giornata intera sopra e alla fine ci ho rinunciato finché non cambieranno qualcosa sul repo.

sirol81 commented 3 years ago

semplicemente non funziona fatta così com è l' """""""""sdk""""""""". Ci ho sbattuto la testa una giornata intera sopra e alla fine ci ho rinunciato finché non cambieranno qualcosa sul repo.

Andrea io mi sono appena reso conto di aver clonato MASTER e non DEVELOP. Master è indietro e mancano un sacco di file.

Adesso l'intellisense mi ha aggiunto correttamente questa import: import it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker

andrearavalli commented 3 years ago

semplicemente non funziona fatta così com è l' """""""""sdk""""""""". Ci ho sbattuto la testa una giornata intera sopra e alla fine ci ho rinunciato finché non cambieranno qualcosa sul repo.

Andrea io mi sono appena reso conto di aver clonato MASTER e non DEVELOP. Master è indietro e mancano un sacco di file.

Adesso l'intellisense mi ha aggiunto correttamente questa import: import it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker

Mi spiegheresti come hai fatto? Io ho clonato il developer eppure non mi importa una mazza..

image

settings.gradle.txt

sirol81 commented 3 years ago

Mi spiegheresti come hai fatto? Io ho clonato il developer eppure non mi importa una mazza.. io ho il decoder e l'sdk che mi appaiono come apribili, da te sembrano come avevo io prima il progetto SDK quando clonavo erroneamente da MASTER.

Siccome stamattina per l'ennesima volta sono ripartito da zero, provo a elencare qui i passi che ho seguito:

andrearavalli commented 3 years ago

Mi spiegheresti come hai fatto? Io ho clonato il developer eppure non mi importa una mazza.. image

io ho il decoder e l'sdk che mi appaiono come apribili, da te sembrano come avevo io prima il progetto SDK quando clonavo erroneamente da MASTER.

Siccome stamattina per l'ennesima volta sono ripartito da zero, provo a elencare qui i passi che ho seguito:

  • installazione di Android Studio aggiornato, eseguirlo come amministratore
  • clonare il repo https://github.com/ministero-salute/it-dgc-verificac19-sdk-android.git branch DEVELOP !!!
  • clonare https://github.com/eu-digital-green-certificates/dgca-app-core-android.git branch MAIN
  • clonare https://github.com/eu-digital-green-certificates/dgc-certlogic-android.git branch MAIN
  • avere tutti e 3 i progetti in una cartella, tutti come sottocartella della stessa cartella principale come da istruzioni
  • per scrupolo, aprire e buildare correttamente il progetto it-dgc-verificac19-sdk-android
  • creare un nuovo progetto vuoto, come quarta cartella in parallelo alle 3 già esistenti
  • copia/incollare la cartella buildSrc presa dal progetto VerificaC19
  • buildare per far "vedere" la nuova cartella
  • configurare il file settings.gradle come da istruzioni: include ':dgc-sdk' include ':decoder' project(':dgc-sdk').projectDir = new File("../it-dgc-verificac19-sdk-android/sdk") project(':decoder').projectDir = new File("../dgca-app-core-android/decoder")
  • quando c'è l'errore relativo a "androidx.navigation.safeargs.kotlin", inserire alcuni classpath nel build.gradle del progetto principale (non dei moduli) dentro buildscript { dependencies { classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5" classpath "com.google.dagger:hilt-android-gradle-plugin:2.38.1" classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.4.30"
  • quando c'è l'errore relativo alla variabile _$kotlinversion, rinominarla in $kotlin
  • quando c'è l'errore relativo a "META-INF/ASL-2.0.txt", inserire questo packagingOptions (preso dall'SDK) dentro il build.gradle del modulo della vostra app: packagingOptions { pickFirst 'META-INF/ASL-2.0.txt' pickFirst 'draftv4/schema' pickFirst 'draftv3/schema' pickFirst 'META-INF/LGPL-3.0.txt' exclude 'META-INF/atomicfu.kotlin_module' }
  • scrivendo LoadKeysWorker diventerà rosso, cliccandoci sopra e premendo ALT+INVIO dovrebbe automaticamente importarti il package corretto
  • ogni tanto risincronizzare Gradle fra un passaggio e l'altro per tenere tutto in sync
  • se ci sono altri errori provare a fare Clean del progetto e poi un bel Rebuild

Ti ringrazio, provo immediatamente. Intanto grazie ancora per lo sforzo a scrivere questo "howTo" :)

sirol81 commented 3 years ago

Ti ringrazio, provo immediatamente. Intanto grazie ancora per lo sforzo a scrivere questo "howTo" :)

se trovo qualche incongruenza modificherò direttamente il post di sopra

astagi commented 3 years ago

Ho aggiunto istruzioni girate direttamente dal team, ditemi se possono essere d'aiuto https://github.com/ministero-salute/it-dgc-verificac19-sdk-android/pull/40

sirol81 commented 3 years ago

Ho aggiunto istruzioni girate direttamente dal team, ditemi se possono essere d'aiuto #40

sicuramente ci aiutano ad andare nella direzione corretta, grazie. Per coloro fra di noi che sono riusciti ad arrivare più avanti, è possibile integrare la documentazione anche per quanto riguarda un corretto utilizzo di LoadKeysWorker e VerificationViewModel? purtroppo in tanti siamo bloccati in questo punto. Io personalmente, scopiazzando dal sorgente di VerificaC19, penso di aver fatto un worker funzionante ma sono bloccato prima dell'init del viewmodel, non riesco a dedurre come inizializzarlo correttamente.

Grazie a tutti voi contributori

andrearavalli commented 3 years ago

Ho aggiunto istruzioni girate direttamente dal team, ditemi se possono essere d'aiuto #40

grazie @astagi . Però dal team ci aspettiamo qualcosa di più di questo "HowTo" (che poi aveva già fatto in un qualche modo @sirol81 ).. Abbiamo assolutamente bisogno di esempi chiari che spieghino come utilizzare l'SDK in primis e successivamente (anche se sarebbe dovuto già essere così) una libreria fatta come una libreria. Sia chiaro che non è una critica a te, ma è oggettivo che qualcosa non vada.

astagi commented 3 years ago

@andrearavalli @sirol81 capisco, certo! ho girato tutte le osservazioni e chiesto di implementare esempi ad-hoc per l'uso dell'SDK. Una domanda, da Verifica C19 che attualmente utilizza l'SDK riuscite a estrapolare le informazioni che vi servono?

acaliaro commented 3 years ago

@andrearavalli @sirol81 capisco, certo! ho girato tutte le osservazioni e chiesto di implementare esempi ad-hoc per l'uso dell'SDK. Una domanda, da Verifica C19 che attualmente utilizza l'SDK riuscite a estrapolare le informazioni che vi servono?

@astagi ciao. Credo che occorra, come richiesto in #28 , avere una libreria importabile tramite gradle, così che lo sviluppatore non debba interessarsi dei 3 progetti ai quali fa riferimento l'sdk ma si debba concentrare esclusivamente sulla sua applicazione.

andrearavalli commented 3 years ago

@andrearavalli @sirol81 capisco, certo! ho girato tutte le osservazioni e chiesto di implementare esempi ad-hoc per l'uso dell'SDK. Una domanda, da Verifica C19 che attualmente utilizza l'SDK riuscite a estrapolare le informazioni che vi servono?

Domani provo, intanto ho ricostruito da zero il progetto seguendo il "nuovo" HowTo. Se posso permettermi una piccola osservazione nel punto 3 c'è una ripetizione: nel punto 3.1 c'è scritto di copiare qualcosa nel build.gradle dell'app "utente" nel punto 3.3 c'è scritto di copiare tutto il contenuto della build.gradle dell'app VerificaC19 nell'app utente.. Se non sbaglio direi che il punto 3.1 non serve a nulla visto il 3.3

edit: Aggiungo che partendo da zero (progetto in Java) ho questo errore alla fine:

Unable to find method ''void com.android.build.api.extension.AndroidComponentsExtension$DefaultImpls.androidTests$default(com.android.build.api.extension.AndroidComponentsExtension, com.android.build.api.extension.VariantSelector, kotlin.jvm.functions.Function1, int, java.lang.Object)''
'void com.android.build.api.extension.AndroidComponentsExtension$DefaultImpls.androidTests$default(com.android.build.api.extension.AndroidComponentsExtension, com.android.build.api.extension.VariantSelector, kotlin.jvm.functions.Function1, int, java.lang.Object)'

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.

Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.

In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

Ho provato a cambiare versione di gradle e fa uguale.. Naturalmente se compilo un mio progetto funziona tutto. Domani ci riprovo partendo da Kotlin anche se vorrei farlo in Java dato che di Kotlin non ci capisco molto :)

sirol81 commented 3 years ago

Una domanda, da Verifica C19 che attualmente utilizza l'SDK riuscite a estrapolare le informazioni che vi servono?

sono riuscito (credo, visto che non ho errori in runtime) a inizializzare il worker con un ciclo periodico di 24h copiando il codice da VerificaC19, ma sono impantanato per quanto riguarda l'istanziare il VerificationViewModel, dargli in pasto la stringa che rappresenta la scansione del qrcode (la ottengo facilmente con lettore ZXing) e farmi restituire un CertificateSimple da validare.

viseldev commented 3 years ago

@sirol81 buongiorno, potresti indicarmi dove trovare il codice di inizializzazione del worker con un ciclo di 1 giorno? Per quanto riguarda l'inizializzazione di VerficationViewModel ho capito che vada inizializzata per la maggior parte con implementazioni di default, ma mi blocco sul parametro di tipo ApiService.

sirol81 commented 3 years ago

@sirol81 buongiorno, potresti indicarmi dove trovare il codice di inizializzazione del worker con un ciclo di 1 giorno? Per quanto riguarda l'inizializzazione di VerficationViewModel ho capito che vada inizializzata per la maggior parte con implementazioni di default, ma mi blocco sul parametro di tipo ApiService.

lo trovi già in un mio post precedente:

PaoloG1980 commented 3 years ago

Buon giorno a tutti, premetto che ho iniziato a sviluppare in Android Studio questo lunedì, quindi abbiate pietà se scrivo gastronerien varie Comunque io ho seguito tutti i passi indicati da @sirol81, facendo build dopo ogni operazione. Non ho incontrato nessuno dei possibili errori indicati, ma quando vado a scrivere LoadKeysWorker se premo ALT+INVIO non trovo la possibilità di aggiungere la dipendenza. Ho anche provato ad aggiungere implementation project(path: ':dgc-sdk') direttamente sul file build.gradle del modulo del progetto, ma nulla da errore

errore

Qualcuno sa come aiutarmi Grazie Paolo

sirol81 commented 3 years ago

Buon giorno a tutti, premetto che ho iniziato a sviluppare in Android Studio questo lunedì, quindi abbiate pietà se scrivo gastronerien varie Comunque io ho seguito tutti i passi indicati da @sirol81, facendo build dopo ogni operazione. Non ho incontrato nessuno dei possibili errori indicati, ma quando vado a scrivere LoadKeysWorker se premo ALT+INVIO non trovo la possibilità di aggiungere la dipendenza. Ho anche provato ad aggiungere implementation project(path: ':dgc-sdk') direttamente sul file build.gradle del modulo del progetto, ma nulla da errore

Qualcuno sa come aiutarmi Grazie Paolo

più che i miei passi, ti consiglio di seguire i passi ufficiali che ci sono adesso nella pagina iniziale (sono stati integrati di recente). solo allora in caso di problemi valuta come intervenire grazie ai consigli sparsi qua e là, ma di base sempre usare le indicazioni ufficiali onde evitare problemi inattesi

viseldev commented 3 years ago

@PaoloG1980 buongiorno, prova a controllare il settings.gradle della tua applicazione, controlla se ci sono le direttive:

include ':dgc-sdk' include ':decoder' project(':dgc-sdk').projectDir = new File("../it-dgc-verificac19-sdk-android/sdk") project(':decoder').projectDir = new File("../dgca-app-core-android/decoder")

io dentro al costruttore di File ci ho passato un percorso assoluto perché lasciandolo relativo non mi vede i progetti esterni.

PaoloG1980 commented 3 years ago

Innanzi tutto un grande grazie a @sirol81 e @viseldev. Sono finalmente riuscito a installare questa cavolo di SDK, sono ripartito dai passi ufficiali e ho integrato i geek proposti da @sirol81 e sono riuscito nell'impresa di riuscire a fare build. Ora sono al passaggio successivo: capire come usare il LoadKeysWorker....ma gia per oggi mi ritengo soddisfatto...cmq se qualcuno ha delle dritte da darmi sono sempre ben accette. Ciao Paolo

PaoloG1980 commented 3 years ago

Aiutoooooooo.... dopo ultima build che ho fatto mi ha data errore META-INF/ASL-2.0.txt, quindi sono andato nel build.gradle della mia app e ho aggiunto il codice riportato da @sirol81 ma facendo build mi da errore image Cosa sbaglio????

sirol81 commented 3 years ago

Aiutoooooooo.... dopo ultima build che ho fatto mi ha data errore META-INF/ASL-2.0.txt, quindi sono andato nel build.gradle della mia app e ho aggiunto il codice riportato da @sirol81 ma facendo build mi da errore Cosa sbaglio????

O hai sbagliato file build.gradle da editare, o hai rovinato qualcosa nel file. Ti consiglio di ricominciare da zero seguendo le istruzioni aggiornate, in quelle fa copiare interamente il contenuto di alcuni file che già hanno il corretto packaging options e non deve quindi darti errore META-INF

PaoloG1980 commented 3 years ago

Ho risolto, avevo sbagliato la sezione in cui inserire lo script, andava inserito dentro la sezione android del file build.gradle della mia app. Ora funziona e riesco a fare build

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.