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

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

Problemi ad istanziare il LoadKeyWorker con la nuova versione di libreria #133

Closed giga89 closed 2 years ago

giga89 commented 2 years ago

Buonasera, è cambiato qualcosa nel LoadKeyWorker nella versione 1.1.5 rispetto alla precedente? Il mio codice per chiamarlo ora mi da un'eccezione

    uploadWorkRequest = new PeriodicWorkRequest.Builder(LoadKeysWorker.class, 1, TimeUnit.DAYS)
            .setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
            .build();
    WorkManager.getInstance(thisContext)
            .enqueueUniquePeriodicWork("LoadKeysWorker", ExistingPeriodicWorkPolicy.REPLACE, (PeriodicWorkRequest)uploadWorkRequest);

2022-02-14 22:01:00.821 10917-10972/com.zucchetti.AccessC19 E/WM-WorkerFactory: Could not instantiate it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker java.lang.NoSuchMethodException: it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker. [class android.content.Context, class androidx.work.WorkerParameters] at java.lang.Class.getConstructor0(Class.java:2332) at java.lang.Class.getDeclaredConstructor(Class.java:2170) at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95) at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:245) at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:137) at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) 2022-02-14 22:01:00.825 10917-10972/com.zucchetti.AccessC19 E/WM-WorkerWrapper: Could not create Worker it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker

Da cosa può essere provocata? Grazie

rawmain commented 2 years ago

Ciao @giga89

è cambiato qualcosa nel LoadKeyWorker nella versione 1.1.5 rispetto alla precedente? Il mio codice per chiamarlo ora mi da un'eccezione [...] E/WM-WorkerFactory: Could not instantiate it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker java.lang.NoSuchMethodException: it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker. [class android.content.Context, class androidx.work.WorkerParameters]

Tale eccezione di metodo non trovato con LoadKeysWorker si riscontra quando si alzano compileSdk/targetSdk da API level 30 (Android 11/R) a 31 (Android 12/R) dell'app, che integra DGC-SDK come project, senza aver applicato anche le modifiche necessarie in :

Vedasi closed issue #67 & relative indicazioni di risoluzione, che ritrovi anche - escludendo la parte relativa al CI workflow, se non ti serve/interessa - negli edit del seguente commit 14513b8 applicato alla whitelabel-app VerificaC19 - quando appunto venne portato il suo targetSdk da 30 a 31.


Nota a margine :

Avendo dato un'occhiata (veloce) alla release odierna 1.9 build 58 (integrante DGC-SDK 1.1.4) dell'app a cui stai lavorando, ti segnalo - qualora non lo sapessi già - che è stato confermato oggi che la tipologia di verifica STUDENTI non possa essere più mantenuta/inclusa nelle app/soluzioni terze, che utilizzino SDK/Librerie autorizzate ex DPCM 12/10/2021.

Solo le app ufficiali VerificaC19 iOS/Android sono autorizzate ad effettuare controlli/validazioni con tale scanmode.

Tale disposizione vale non solo per SDK/Librerie terze autorizzate (che provvederanno a disabilitare/rimuovere il supporto scanmode SCHOOL nelle loro nuove release), ma anche per l'uso del DGC/SDK Android/Kotlin da parte di app terze.

Nel tuo caso dovrai quindi semplicemente rimuovere dalla UI della prossima release l'opzione Studenti in Impostazioni \ Tipologia di Verifica.

giga89 commented 2 years ago

Grazie @rawmain , gentilissimo come al solito. Non avevo trovato quell'issue che mi hai linkato probabilmente grazie alla stanchezza accumulata in giornata :) Ho risolto seguendo i tuoi consigli e il codice nell'issue da te linkato Chiudo Ti ringrazio ancora, ciao