Closed albertocappellina closed 2 years ago
Buonasera @albertocappellina
come da oggetto all'avvio del worker LoadKeysWorker la nostra app crasha con il seguente errore
`Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable [...] Cercando in rete questo problema sembra essere risolto da androidx.work:work-runtime-ktx:2.7.0-alpha05 tuttavia a questo punto il worker non viene piu' avviato, con questo messaggio di errore
Avendo reimpostato il target da 30 a 31 per la vostra app, una volta verificato ok allineamenti nuovi compileSdk&targetSdk a 31 con le dependency dei progetti (app + dgc-sdk + decoder), dovreste aver applicato di base anche le 3 seguenti modifiche :
Cambio versione androidx_worker_ktx nella implementation di app build.gradle dalla 2.5.0 (base corrente per LoadKeysWorker con target SDK 30) alla 2.7.1
Impostazione forzata della versione 2.7.1 in allprojects nel root build.gradle
allprojects {
repositories {
google()
jcenter()
}
project.configurations.all {
resolutionStrategy {
force Deps.androidx_worker_ktx
}
}
}
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
Esito OK nei test effettuati su emulatore / dispositivi reali con tali modifiche applicate al codice corrente merged develop + feature/sgp per verifier-app & DGC-SDK (supporto scan mode 2G/3G & CRL/DRL RevokeList).
Nessuna exception & regolare avvio LoadKeysWorker: key fetching start e passi successivi.
Qualora possa servirvi per controllo codice & test, ti allego :
Codice usato per i test = decoder + dgc-sdk + app integrante le sopracitate modifiche
Universal APK di VerificaC19 - supporto SGP e CRL - con compileSdk & targetsSdk 31
https://github.com/VC19SGP/it-dgc-verificaC19-android-SGP/releases/tag/1.1.7-SGP-20211125-T31
Grazie infinite, la correzione funziona!
Ne approfitto per chiederti se per modificare i targetSdk/compileSdk dei sottoprogetti dobbiamo modificare in locale le definizioni (senza pusharle) o se possiamo usare il force anche per quelle, es:
project.configurations.all {
resolutionStrategy {
force Deps.androidx_worker_ktx
force Config.targetSdk
force Config.compileSdk
}
}
Ciao @albertocappellina
Grazie infinite, la correzione funziona!
Prego ;) .
Ne approfitto per chiederti se per modificare i targetSdk/compileSdk dei sottoprogetti dobbiamo modificare in locale le definizioni (senza pusharle) o se possiamo usare il force anche per quelle [...]
Personalmente suggerirei di mantenere comunque un approccio "keep it simple" - evitando modifiche locali & minimizzando override per i projects DGC-SDK e EU DCC core.
L'override force compileSdk/targetSdk richiederebbe comunque anche override dependency.useVersion espliciti per alcuni casi ModuleVersionSelector dependency.getRequested .
Sufficiente quindi impostare i parametri per object Config solo in app buildsrc :
minSdk = 24 - può essere eventualmente ridotto a 23, applicando commit minimi lato codice app/UI - ved. PR#113
compileSdk = 31 - medesimo val target, onde evitare modifiche per allineamento dependency vs gradle module metadata
targetSdk = 31
Qualora posso servirvi per controllo codice & test, allego :
Codice corrente merged develop + feature/sgp VerificaC19 con supporto OK build/run per minSdk API 23 (Marshmallow 6.0) e compileSdk/targetSdk API 31
Universal APK release variant compilata da tale codice
https://github.com/VC19SGP/it-dgc-verificaC19-android-SGP/releases/tag/1.1.7-SGP-20211126-M23-T31
Chiaro! Grazie ancora, chiudo la issue così qualcun'altro potra' trovarne beneficio :)
Issue content
Buonasera,
come da oggetto all'avvio del worker LoadKeysWorker la nostra app crasha con il seguente errore
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. at android.app.PendingIntent.checkFlags(PendingIntent.java:375) at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645) at android.app.PendingIntent.getBroadcast(PendingIntent.java:632) at androidx.work.impl.utils.ForceStopRunnable.getPendingIntent(ForceStopRunnable.java:273) at androidx.work.impl.utils.ForceStopRunnable.isForceStopped(ForceStopRunnable.java:151) at androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable(ForceStopRunnable.java:171) at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:102) 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:920)
Cercando in rete questo problema sembra essere risolto da androidx.work:work-runtime-ktx:2.7.0-alpha05 tuttavia a questo punto il worker non viene piu' avviato, con questo messaggio di errore:
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:2363)
at java.lang.Class.getDeclaredConstructor(Class.java:2201)
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:920)
E/WM-WorkerWrapper: Could not create Worker it.ministerodellasalute.verificaC19sdk.worker.LoadKeysWorker
Qualcuno è riuscito a risolvere questo problema ?