Skip to content

App crashing for API 28 #2596

@maskaravivek

Description

@maskaravivek

Summary:

After recently updating to API 28 in #2595, the app started crashing for Android Pie devices. It works fine for lower Android versions.

Android Pie's changelog mentions the removal of Apache HTTP client from the system's boot classpath.

This is the suggested fix:
https://developer.android.com/about/versions/pie/android-9.0-changes-28#apache-p

Steps to reproduce:

App crashes while starting.

System logs:

2019-03-15 08:42:37.806 14649-14649/? I/rw.commons.bet: Not late-enabling -Xcheck:jni (already on)
2019-03-15 08:42:37.828 14649-14649/? W/rw.commons.bet: Unexpected CPU variant for X86 using defaults: x86
2019-03-15 08:42:38.236 14649-14649/? I/ACRA: ACRA is enabled for fr.free.nrw.commons.beta, initializing...
2019-03-15 08:42:38.416 14649-14649/fr.free.nrw.commons.beta D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2019-03-15 08:42:38.467 14649-14649/fr.free.nrw.commons.beta D/AndroidRuntime: Shutting down VM
2019-03-15 08:42:38.471 14649-14649/fr.free.nrw.commons.beta E/AndroidRuntime: FATAL EXCEPTION: main
    Process: fr.free.nrw.commons.beta, PID: 14649
    java.lang.RuntimeException: Unable to create application fr.free.nrw.commons.CommonsApplication: org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]] (Caused by java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]])
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5876)
        at android.app.ActivityThread.access$1100(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]] (Caused by java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]])
        at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1276)
        at org.apache.commons.logging.LogFactory$2.run(LogFactory.java:1065)
        at java.security.AccessController.doPrivileged(AccessController.java:43)
        at org.apache.commons.logging.LogFactory.newFactory(LogFactory.java:1062)
        at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:650)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
        at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>(ThreadSafeClientConnManager.java:157)
        at fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi.<init>(ApacheHttpClientMediaWikiApi.java:86)
        at fr.free.nrw.commons.di.NetworkingModule.provideMediaWikiApi(NetworkingModule.java:72)
        at fr.free.nrw.commons.di.NetworkingModule_ProvideMediaWikiApiFactory.get(NetworkingModule_ProvideMediaWikiApiFactory.java:39)
        at fr.free.nrw.commons.di.NetworkingModule_ProvideMediaWikiApiFactory.get(NetworkingModule_ProvideMediaWikiApiFactory.java:12)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at fr.free.nrw.commons.di.CommonsApplicationModule_ProvidesSessionManagerFactory.get(CommonsApplicationModule_ProvidesSessionManagerFactory.java:37)
        at fr.free.nrw.commons.di.CommonsApplicationModule_ProvidesSessionManagerFactory.get(CommonsApplicationModule_ProvidesSessionManagerFactory.java:12)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at fr.free.nrw.commons.di.DaggerCommonsApplicationComponent.injectCommonsApplication(DaggerCommonsApplicationComponent.java:1251)
2019-03-15 08:42:38.473 14649-14649/fr.free.nrw.commons.beta E/AndroidRuntime:     at fr.free.nrw.commons.di.DaggerCommonsApplicationComponent.inject(DaggerCommonsApplicationComponent.java:1196)
        at fr.free.nrw.commons.CommonsApplication.onCreate(CommonsApplication.java:96)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871)
        	... 8 more
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1131)
        	... 27 more
2019-03-15 08:42:38.478 14649-14649/fr.free.nrw.commons.beta E/ACRA: ACRA caught a RuntimeException for fr.free.nrw.commons.beta
    java.lang.RuntimeException: Unable to create application fr.free.nrw.commons.CommonsApplication: org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]] (Caused by java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]])
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5876)
        at android.app.ActivityThread.access$1100(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]] (Caused by java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]])
        at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1276)
        at org.apache.commons.logging.LogFactory$2.run(LogFactory.java:1065)
        at java.security.AccessController.doPrivileged(AccessController.java:43)
        at org.apache.commons.logging.LogFactory.newFactory(LogFactory.java:1062)
        at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:650)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
        at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>(ThreadSafeClientConnManager.java:157)
        at fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi.<init>(ApacheHttpClientMediaWikiApi.java:86)
        at fr.free.nrw.commons.di.NetworkingModule.provideMediaWikiApi(NetworkingModule.java:72)
        at fr.free.nrw.commons.di.NetworkingModule_ProvideMediaWikiApiFactory.get(NetworkingModule_ProvideMediaWikiApiFactory.java:39)
        at fr.free.nrw.commons.di.NetworkingModule_ProvideMediaWikiApiFactory.get(NetworkingModule_ProvideMediaWikiApiFactory.java:12)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at fr.free.nrw.commons.di.CommonsApplicationModule_ProvidesSessionManagerFactory.get(CommonsApplicationModule_ProvidesSessionManagerFactory.java:37)
        at fr.free.nrw.commons.di.CommonsApplicationModule_ProvidesSessionManagerFactory.get(CommonsApplicationModule_ProvidesSessionManagerFactory.java:12)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at fr.free.nrw.commons.di.DaggerCommonsApplicationComponent.injectCommonsApplication(DaggerCommonsApplicationComponent.java:1251)
2019-03-15 08:42:38.480 14649-14649/fr.free.nrw.commons.beta E/ACRA:     at fr.free.nrw.commons.di.DaggerCommonsApplicationComponent.inject(DaggerCommonsApplicationComponent.java:1196)
        at fr.free.nrw.commons.CommonsApplication.onCreate(CommonsApplication.java:96)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871)
        	... 8 more
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.impl.LogFactoryImpl" on path: DexPathList[[zip file "/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/lib/x86, /data/app/fr.free.nrw.commons.beta-ntPdyCngt22axPvg-9vrCA==/base.apk!/lib/x86, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1131)
        	... 27 more
2019-03-15 08:42:38.778 14649-14649/fr.free.nrw.commons.beta I/Process: Sending signal. PID: 14649 SIG: 9

Device and Android version:

Emulator. API 28

Commons app version:

latest master

Would you like to work on the issue?

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions