The project in which currently I am working have been using targetSDK = 30 & compileSDK=30. I upgraded *targetSDK=33, Now I need to add android:exported="true or false" in each activity and I have added. but when I run Nothing screen shows blank screeen and goes into infinite look throwing error
Instance creation error : could not create instance for [Factory:'androidx.work.WorkManager']: java.lang.IllegalStateException: WorkManager is not initialized properly. You have explicitly disabled WorkManagerInitializer in your manifest, have not manually called WorkManager#initialize at this point, and your Application does not implement Configuration.Provider. androidx.work.impl.WorkManagerImpl.getInstance(WorkManagerImpl.java:156) androidx.work.WorkManager.getInstance(WorkManager.java:184) org.catrobat.catroid.koin.CatroidKoinHelperKt$componentsModules$1$3.invoke(CatroidKoinHelper.kt:69)
Code of CatroidKoinHelper.kt is
val componentsModules = module(createdAtStart = true, override = false) {
single {
Room.databaseBuilder(androidContext(), AppDatabase::class.java, "app_database")
.addMigrations(DatabaseMigrations.MIGRATION_1_2)
.build()
}
single { CatroidWebServer.getWebService("https://share.catrob.at/api/") }
factory { WorkManager.getInstance(androidContext()) } //Error was because of this line
single { ProjectManager(androidContext()) }
single { NetworkConnectionMonitor(androidContext()) }
factory { HuaweiApiAvailability.getInstance() }
factory { GoogleApiAvailability.getInstance() }
factory { MobileServiceAvailability(get(), get()) }
single { BackpackListManager.getInstance() }
single {
DefaultFeaturedProjectSync(get(), get(), get()) as FeaturedProjectsSync
}
single {
DefaultProjectsCategoriesSync(get(), get(), get()) as ProjectsCategoriesSync
}
}
error was because of this line factory { WorkManager.getInstance(androidContext()) }
Temporary Solution: I searched in stackoverflow and added following snippet in my AndroidManifest.xml file
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
android:exported="false">
</provider>
But now when I build my app then shows following errors
Work [ id=e78c5f3e-2b24-4556-a702-94278f8eb4c5, tags={ org.catrobat.catroid.sync.ProjectsCategoriesSyncWorker } ] failed because it threw an exception/error java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: timeout at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516) at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475) at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:300) 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:923) Caused by: java.net.SocketTimeoutException: timeout at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.java:678) at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.java:686) at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.java:154) at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.java:136) at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.java:115) at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:43) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at org.catrobat.catroid.retrofit.ErrorInterceptor.intercept(ErrorInterceptor.kt:33) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at org.catrobat.catroid.retrofit.CatroidWebServer$Companion$getWebService$okHttpClient$1.intercept(RetrofitWebServer.kt:71) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229) at okhttp3.RealCall.execute(RealCall.java:81) at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)