question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Make app run on Android 5 Lollipop (sdkversion 21)

See original GitHub issue

Feature description

The Corona warning app should be able to run on Android 5 (Lollipop, skdversion 21).

Problem and motivation

According to the Android distribution chart in Android Studio Lollipop (5.1 and 5.2) is used by 9.2 percent. With a total market share of 75% and around 90% of the german population owning a smartphone the corona app is excluding approx. 5.163.571 people from using it (on Android alone).

Lollipop is used on smartphones, which where released 3-4 years ago. It’s clear, that people, who buy used phones or keep phones longer (that is: people with not much money!) are the ones, who can’t use the app.

I don’t think this is acceptable given the fact, that the whole population should be protected.

Is this something you’re interested in working on

Yes, I would be willing to work on this and already began, but I need help (and also, I’m neither experienced in writing Kotlin, nor with writing Android Apps, so if anyone else want’s to jump in, please do!).

I was able to get the (debug) app build for sdkversion 21 by upgrading to androidx.security:security-crypto:1.1.0-alpha01.

You can take a look at this here: https://github.com/messersm/cwa-app-android/commit/ab555698e64ef613f9485a0886109d1cbc121fe0

However, the application crashes on start, with: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/security/keystore/KeyGenParameterSpec$Builder; (Line 165). I guess, this has to do with the fact, that androidx.security:security-crypto:1.1.0-alpha01 doesn’t use the keystore on lollipop (see here: https://developer.android.com/jetpack/androidx/releases/security#security-crypto-1.1.0-alpha01) and some libraries are loaded by name lookups (since the app did compile and install).

I/art     (28740): Late-enabling -Xcheck:jni
I/ActivityManager(  679): Start proc 28740:de.rki.coronawarnapp/u0a158 for activity de.rki.coronawarnapp/.ui.LauncherActivity
D/ADB_SERVICES(22522): Adding socket 14 pid 28740 to jdwp process list
W/ADB_SERVICES(22522): create_local_service_socket() name=jdwp:28740
W/ADB_SERVICES(22522): service_to_fd() name=jdwp:28740
W/ADB_SERVICES(22522): looking for pid 28740 in JDWP process list return fds0(22) fds1(23)
W/ADB_SERVICES(22522): LS(7): bound to 'jdwp:28740' via 22
W/ADB_SERVICES(22522): trying to write to JDWP socket=14 pid=28740 count=1 out_fds=23
I/libPerfService(  679): perfSetFavorPid - pid:28740, 7044
D/ActivityManager(  679): getContentProviderImpl: from caller=android.app.ApplicationThreadProxy@160c899d (pid=28740, userId=0) to get content provider settings cpr=ContentProviderRecord{24d9fc38 u0 com.android.providers.settings/.SettingsProvider}
V/SettingsInterface(28740): invalidate [system]: current 300 != cached 0
D/ActivityThread(28740): hoder:android.app.IActivityManager$ContentProviderHolder@393788a,provider,holder.Provider:android.content.ContentProviderProxy@39408efb
D/Proxy   (28740): setHttpRequestCheckHandler
D/ActivityThread(28740): installProvider: context.getPackageName()=de.rki.coronawarnapp
D/ActivityThread(28740): installProvider: context.getPackageName()=de.rki.coronawarnapp
D/ActivityManager(  679): publishContentProviders: from caller=android.app.ApplicationThreadProxy@a0afa0c (pid=28740)
E/SQLiteLog(28740): (283) recovered 27 frames from WAL file /data/data/de.rki.coronawarnapp/databases/androidx.work.workdb-wal
D/MPEG4Extractor(  179): chunk: styp @ 692874050, 0
D/MPEG4Extractor(  179): chunk: moof @ 692874078, 0
D/MPEG4Extractor(  179): chunk: mfhd @ 692874086, 1
D/OpenSSLLib(28740): OpensslErr:Module:13(114:155); file:external/openssl/crypto/asn1/asn1_lib.c ;Line:145;Function:ASN1_get_object
W/linker  (28740): libconscrypt_jni.so: unused DT entry: type 0x6ffffef5 arg 0x1edd8
W/linker  (28740): libconscrypt_jni.so: unused DT entry: type 0x6ffffffe arg 0x2c168
W/linker  (28740): libconscrypt_jni.so: unused DT entry: type 0x6fffffff arg 0x2
V/NativeCrypto(28740): Registering org/conscrypt/NativeCrypto's 286 native methods...
I/art     (28740): Rejecting re-init on previously-failed class java.lang.Class<org.conscrypt.Java7ExtendedSSLSession>
I/art     (28740): Rejecting re-init on previously-failed class java.lang.Class<org.conscrypt.Java7ExtendedSSLSession>
I/art     (28740): Rejecting re-init on previously-failed class java.lang.Class<org.conscrypt.Java8ExtendedSSLSession>
I/art     (28740): Rejecting re-init on previously-failed class java.lang.Class<org.conscrypt.Java8ExtendedSSLSession>
V/ActivityThread(28740): Handling launch of ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}}
V/ActivityThread(28740): ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}}: app=de.rki.coronawarnapp.CoronaWarnApplication@2d268845, appName=de.rki.coronawarnapp, pkg=de.rki.coronawarnapp, comp={de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}, dir=/data/app/de.rki.coronawarnapp-1/base.apk
D/FeatureProxyBase(28740): FeatureProxyBase class constructor
D/FeatureProxyBase(28740): getService(), serviceName = multiwindow_service_v1
I/art     (28740): Background sticky concurrent mark sweep GC freed 34440(1419KB) AllocSpace objects, 3(302KB) LOS objects, 10% free, 13MB/14MB, paused 6.850ms total 54.075ms
D/FeatureProxyBase(28740): FeatureProxyBase class constructor
D/FeatureProxyBase(28740): getService(), serviceName = multiwindow_service_v1
D/FeatureProxyBase(28740): FeatureProxyBase class constructor
D/FeatureProxyBase(28740): getService(), serviceName = multiwindow_service_v1
W/art     (28740): Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
V/CoronaWarnApplication(28740): App foregrounded
D/AccessibilityManager(28740): setStateLocked: wasEnabled = false, mIsEnabled = false, wasTouchExplorationEnabled = false, mIsTouchExplorationEnabled = false, wasHighTextContrastEnabled = false, mIsHighTextContrastEnabled = false
D/AccessibilityManager(28740): java.lang.Throwable: setStateLocked
D/AccessibilityManager(28740): 	at android.view.accessibility.AccessibilityManager.setStateLocked(AccessibilityManager.java:553)
D/AccessibilityManager(28740): 	at android.view.accessibility.AccessibilityManager.tryConnectToServiceLocked(AccessibilityManager.java:636)
D/AccessibilityManager(28740): 	at android.view.accessibility.AccessibilityManager.<init>(AccessibilityManager.java:226)
D/AccessibilityManager(28740): 	at android.view.accessibility.AccessibilityManager.getInstance(AccessibilityManager.java:206)
D/AccessibilityManager(28740): 	at android.view.View.setFlags(View.java:9843)
D/AccessibilityManager(28740): 	at android.view.ViewGroup.initViewGroup(ViewGroup.java:536)
D/AccessibilityManager(28740): 	at android.view.ViewGroup.<init>(ViewGroup.java:525)
D/AccessibilityManager(28740): 	at android.view.ViewGroup.<init>(ViewGroup.java:520)
D/AccessibilityManager(28740): 	at android.view.ViewGroup.<init>(ViewGroup.java:516)
D/AccessibilityManager(28740): 	at android.view.ViewGroup.<init>(ViewGroup.java:512)
D/AccessibilityManager(28740): 	at android.widget.FrameLayout.<init>(FrameLayout.java:119)
D/AccessibilityManager(28740): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.<init>(PhoneWindow.java:2326)
D/AccessibilityManager(28740): 	at com.android.internal.policy.impl.PhoneWindow.generateDecor(PhoneWindow.java:3460)
D/AccessibilityManager(28740): 	at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3846)
D/AccessibilityManager(28740): 	at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:2042)
D/AccessibilityManager(28740): 	at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:717)
D/AccessibilityManager(28740): 	at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
D/AccessibilityManager(28740): 	at androidx.appcompat.app.AppCompatDelegateImpl.onPostCreate(AppCompatDelegateImpl.java:376)
D/AccessibilityManager(28740): 	at androidx.appcompat.app.AppCompatActivity.onPostCreate(AppCompatActivity.java:118)
D/AccessibilityManager(28740): 	at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1194)
D/AccessibilityManager(28740): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2497)
D/AccessibilityManager(28740): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
D/AccessibilityManager(28740): 	at android.app.ActivityThread.access$800(ActivityThread.java:178)
D/AccessibilityManager(28740): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
D/AccessibilityManager(28740): 	at android.os.Handler.dispatchMessage(Handler.java:111)
D/AccessibilityManager(28740): 	at android.os.Looper.loop(Looper.java:194)
D/AccessibilityManager(28740): 	at android.app.ActivityThread.main(ActivityThread.java:5637)
D/AccessibilityManager(28740): 	at java.lang.reflect.Method.invoke(Native Method)
D/AccessibilityManager(28740): 	at java.lang.reflect.Method.invoke(Method.java:372)
D/AccessibilityManager(28740): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
D/AccessibilityManager(28740): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
I/art     (28740): Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
I/art     (28740): Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
V/ActivityThread(28740): Performing resume of ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}}
I/art     (28740): Background partial concurrent mark sweep GC freed 7909(468KB) AllocSpace objects, 2(541KB) LOS objects, 22% free, 13MB/17MB, paused 10.836ms total 73.570ms
D/ActivityThread(28740): ACT-AM_ON_RESUME_CALLED ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}}
V/ActivityThread(28740): Resume ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}} started activity: false, hideForNow: false, finished: false
V/PhoneWindow(28740): DecorView setVisiblity: visibility = 4 ,Parent =null, this =com.android.internal.policy.impl.PhoneWindow$DecorView{2a251d6d I.E..... R.....I. 0,0-0,0}
I/SurfaceFlinger(  165): EventThread Client Pid (28740) created
I/SurfaceFlinger(  165): EventThread Client Pid (28740) created
D/OpenGLRenderer(28740): initialize DisplayEventReceiver 0xb47ff168
D/OpenGLRenderer(28740): Use EGL_SWAP_BEHAVIOR_PRESERVED: false
D/GraphicBuffer(28740): register, handle(0xa1c10ca0) (w:1280 h:1600 s:1280 f:0x1 u:0x000100)
D/Atlas   (28740): Validating map...
I/okhttp.OkHttpClient(28740): --> GET https://svc90.main.px.t-online.de/version/v1/configuration/country/DE/app_config
I/okhttp.OkHttpClient(28740): --> END GET
D/ViewRootImpl(28740): hardware acceleration is enabled, this = ViewRoot{390aa035 de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity,ident = 0}
V/ActivityThread(28740): Resuming ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}} with isForward=true
D/FeatureProxyBase(28740): FeatureProxyBase class constructor
D/FeatureProxyBase(28740): getService(), serviceName = multiwindow_service_v1
V/PhoneWindow(28740): DecorView setVisiblity: visibility = 0 ,Parent =ViewRoot{390aa035 de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity,ident = 0}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{2a251d6d V.E..... R.....I. 0,0-0,0}
V/ActivityThread(28740): Scheduling idle handler for ActivityRecord{214b3b9a token=android.os.BinderProxy@c4d7ccb {de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity}}
I/System.out(28740): [CDS][DNS] getAllByNameImpl netId = 0
D/libc-netbsd(28740): [getaddrinfo]: hostname=svc90.main.px.t-online.de; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd(28740): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd(28740): [getaddrinfo]: hostname=svc90.main.px.t-online.de; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd(28740): [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
D/OpenGLRenderer(28740): CanvasContext() 0xb44971c0 initialize 0xb45cde08
E/[DRVB][EXT][UTIL](28740): disp_only_chk: DRVB CHECK DISP PROCESS DONE ! (2/0x47/0x48/0x46)
E/[DRVB][EXT][UTIL](28740): disp_only_chk: DRVB CHECK DISP PROCESS DONE ! (720/0/1)
E/[DRVB][EXT][UTIL](28740): disp_only_chk: DRVB CHECK0 PROCESS DONE ! STATUS (0x2000)
W/[DRVB]  (28740): sec_drv_base_check: DRVB PROCESS STATUS = 0x2000
V/InputMethodManager(28740): onWindowFocus: null softInputMode=288 first=true flags=#81812100
V/InputMethodManager(28740): START INPUT: com.android.internal.policy.impl.PhoneWindow$DecorView{2a251d6d V.E..... R.....ID 0,0-720,1280} ic=null tba=android.view.inputmethod.EditorInfo@2cd20ab1 controlFlags=#104
I/OpenGLRenderer(28740): Initialized EGL, version 1.4
I/OpenGLRenderer(28740): Get enable program binary service property (1)
I/OpenGLRenderer(28740): Initializing program atlas...
D/ProgramBinary/Service(28740): BpProgramBinaryService.getFileDescriptor
D/ProgramBinary/Service(28740): BpProgramBinaryService.getProgramMapLen
D/ProgramBinary/Service(28740): BpProgramBinaryService.getProgramMapArray
D/ProgramBinary/Service(28740): BpProgramBinaryService.getProgramBinaryLen
I/OpenGLRenderer(28740): Program binary detail: Binary length is 90540, program map length is 112.
I/OpenGLRenderer(28740): No need to use file discriptor anymore, close fd(48).
D/OpenGLRenderer(28740): TaskManager() 0xb45bbde0, cpu = 4, thread = 2
D/OpenGLRenderer(28740): Enabling debug mode 0
I/[MALI][Gralloc](28740): dlopen libsec_mem.so fail
D/Surface (28740): Surface::connect(this=0xb45cde00,api=1)
I/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) connect(P): api=1 producer=(28740:de.rki.coronawarnapp) producerControlledByApp=true
I/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) new GraphicBuffer needed
D/GraphicBuffer(28740): register, handle(0xa1c10fa0) (w:720 h:1280 s:720 f:0x1 u:0x000f02)
D/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) cancelBuffer: slot 0
I/MaliEGL (28740): [Mali]window_type=1, is_framebuffer=0, errnum = 0
I/MaliEGL (28740): [Mali]surface->num_buffers=4, surface->num_frames=3, win_min_undequeued=1
I/MaliEGL (28740): [Mali]max_allowed_dequeued_buffers=3
D/Surface (28740): Surface::setBufferCount(this=0xb45cde00,bufferCount=4)
I/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) setBufferCount: count = 4
I/BufferQueueConsumer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) getReleasedBuffers: returning mask 0xffffffffffffffff
D/GraphicBuffer(28740): unregister, handle(0xa1c10fa0) (w:720 h:1280 s:720 f:0x1 u:0x000f02)
I/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) new GraphicBuffer needed
D/GraphicBuffer(28740): register, handle(0xa1c10fa0) (w:720 h:1280 s:720 f:0x1 u:0x000f02)
D/Surface (28740): Surface::allocateBuffers(this=0xb45cde00)
D/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) allocateBuffers: allocating from 1 buffers up to 4 buffers
D/BufferQueueProducer(  165): [de.rki.coronawarnapp/de.rki.coronawarnapp.ui.LauncherActivity](this:0xb5c54400,id:11471,api:1,p:28740,c:165) allocateBuffers: allocating from 4 buffers up to 4 buffers
D/libc-netbsd(28740): getaddrinfo: svc90.main.px.t-online.de get result from proxy >>
I/System.out(28740): propertyValue:true
I/System.out(28740): [CDS]rx timeout:10000
I/System.out(28740): [socket][0] connection svc90.main.px.t-online.de/87.140.208.153:443;LocalPort=44658(10000)
I/System.out(28740): [CDS]connect[svc90.main.px.t-online.de/87.140.208.153:443] tm:10
D/Posix   (28740): [Posix_connect Debug]Process de.rki.coronawarnapp :443 
I/System.out(28740): [socket][/100.74.179.237:44658] connected
I/System.out(28740): [CDS]rx timeout:10000
I/okhttp.OkHttpClient(28740): <-- 200 OK https://svc90.main.px.t-online.de/version/v1/configuration/country/DE/app_config (1325ms)
I/okhttp.OkHttpClient(28740): Server: nginx
I/okhttp.OkHttpClient(28740): Date: Tue, 16 Jun 2020 12:24:15 GMT
I/okhttp.OkHttpClient(28740): Content-Type: application/octet-stream
I/okhttp.OkHttpClient(28740): Content-Length: 557
I/okhttp.OkHttpClient(28740): Connection: keep-alive
I/okhttp.OkHttpClient(28740): ETag: "e881f7ed16a56975ca1feca6534ac45a"
I/okhttp.OkHttpClient(28740): Last-Modified: Mon, 15 Jun 2020 17:18:17 GMT
I/okhttp.OkHttpClient(28740): Cache-Control: public,max-age=300
I/okhttp.OkHttpClient(28740): x-amz-meta-cwa-hash: b70a04b564e2374eabf6042b4cb24a01
I/okhttp.OkHttpClient(28740): Content-Security-Policy: default-src 'self' *.coronawarn.app; img-src 'self' *.coronawarn.app data:
I/okhttp.OkHttpClient(28740): X-Content-Type-Options: nosniff
I/okhttp.OkHttpClient(28740): X-Frame-Options: DENY
I/okhttp.OkHttpClient(28740): X-XSS-Protection: 1
I/okhttp.OkHttpClient(28740): Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
I/okhttp.OkHttpClient(28740): Accept-Ranges: bytes
I/okhttp.OkHttpClient(28740): <-- END HTTP (binary 557-byte body omitted)
V/ZipHelper(28740): read zip entry export.sig
V/ZipHelper(28740): read zip entry export.bin
E/AndroidRuntime(28740): FATAL EXCEPTION: main
E/AndroidRuntime(28740): Process: de.rki.coronawarnapp, PID: 28740
E/AndroidRuntime(28740): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/security/keystore/KeyGenParameterSpec$Builder;
E/AndroidRuntime(28740): 	at androidx.security.crypto.MasterKeys.createAES256GCMKeyGenParameterSpec(MasterKeys.java:72)
E/AndroidRuntime(28740): 	at androidx.security.crypto.MasterKeys.<clinit>(MasterKeys.java:55)
E/AndroidRuntime(28740): 	at de.rki.coronawarnapp.util.security.SecurityHelper.<clinit>(SecurityHelper.kt:43)
E/AndroidRuntime(28740): 	at de.rki.coronawarnapp.util.security.VerificationKeys.hasInvalidSignature(VerificationKeys.kt:24)
E/AndroidRuntime(28740): 	at de.rki.coronawarnapp.http.WebRequestBuilder$asyncGetApplicationConfigurationFromServer$2.invokeSuspend(WebRequestBuilder.kt:126)
E/AndroidRuntime(28740): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
E/AndroidRuntime(28740): 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
E/AndroidRuntime(28740): 	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
E/AndroidRuntime(28740): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
E/AndroidRuntime(28740): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
E/AndroidRuntime(28740): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
E/AndroidRuntime(28740): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.security.keystore.KeyGenParameterSpec$Builder" on path: DexPathList[[zip file "/data/app/de.rki.coronawarnapp-1/base.apk"],nativeLibraryDirectories=[/data/app/de.rki.coronawarnapp-1/lib/arm, /vendor/lib, /system/lib]]
E/AndroidRuntime(28740): 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(28740): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E/AndroidRuntime(28740): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E/AndroidRuntime(28740): 	... 11 more
E/AndroidRuntime(28740): 	Suppressed: java.lang.ClassNotFoundException: android.security.keystore.KeyGenParameterSpec$Builder
E/AndroidRuntime(28740): 		at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(28740): 		at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E/AndroidRuntime(28740): 		at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E/AndroidRuntime(28740): 		at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E/AndroidRuntime(28740): 		... 12 more
E/AndroidRuntime(28740): 	Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
D/MPEG4Extractor(  179): chunk: trun @ 203228740, 2
D/AES     (  679):       pid : 28740
D/AEE/LIBAEE(  679): shell: raise_exp(4, 28740, -1361051648, de.rki.coronawarnapp, 0x0x9ebdc000, 0x0x0)
I/AEE/AED (28778): [OnPurpose Redunant in void preset_info(aed_report_record*, int, int)] pid: 28740, tid: -1361051648, name: UNKNOWN  >>> de.rki.coronawarnapp <<<
I/Process (28740): Sending signal. PID: 28740 SIG: 9
D/DisplayManagerService(  679): Display listener for pid 28740 died.
I/SurfaceFlinger(  165): EventThread Client Pid (28740) disconnected by (165)
I/SurfaceFlinger(  165): EventThread Client Pid (28740) disconnected by (165)
W/ADB_SERVICES(22522): terminating JDWP 28740 connection: Try again
D/ADB_SERVICES(22522): remove pid 28740 to jdwp process list
I/ActivityManager(  679): Process de.rki.coronawarnapp (pid 28740) has died
D/ActivityManager(  679): SVC-handleAppDiedLocked: app = ProcessRecord{356f533 28740:de.rki.coronawarnapp/u0a158}, app.pid = 28740
D/ActivityManager(  679): cleanUpApplicationRecord -- 28740

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:5 (1 by maintainers)

github_iconTop GitHub Comments

2reactions
sdeffcommented, Aug 10, 2020

I guess the Exposure Notifications API documentation has been updated recently:

[…] The framework works on some devices as low as version 5.0 (API level 21), so using this version is an option to increase the number of devices eligible. […]

Maybe the minSdk version should be reconsidered?

2reactions
messersmcommented, Jun 18, 2020

@harambasicluka Thanks for the quick feedback. It seems, there are questions about this requirement: https://github.com/google/exposure-notifications-android/issues/16

The code itself declares version 21 as the minimum: https://github.com/google/exposure-notifications-android/blob/master/app/build.gradle#L35

Could we please, if nothing else, keep this open? I don’t think the last word is spoken on this one.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Android Lollipop | Android Developers
Welcome to Android 5.0 Lollipop—the largest and most ambitious release for Android yet! This release is packed with new features for users ...
Read more >
If I make an app at API level 21 (5.0), will it work with newer ...
Yes it will work on newer versions as long as you do not have maxSdkVersion set to 21. In your application manifest, you...
Read more >
Android 5.0 Lollipop SDK 21 Is Now Available – Developers ...
Android 5.0 Lollipop SDK 21 Is Now Available – Developers, Start Your Downloads. By Cody Toombs. Published Oct 17, 2014. On Wednesday, Google...
Read more >
API Levels | Android versions, SDK/API levels, version codes ...
Version SDK / API level Version code Codename Cumulative usage Year Android 13 Level 33 TIRAMISU Tiramisu 2.0% 2022 Android 12 Level 32 Android 12L...
Read more >
Android 5.0 Lollipop SDK and Nexus Preview Images
Validate that your current Android apps run on the new API 21 level with ART enabled. And if you use the NDK for...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found