Tachiyomi: [Bug] Latest dev versions crash on Android 4.x

Created on 5 Jan 2020  路  17Comments  路  Source: tachiyomiorg/tachiyomi

Logcat from API 19 (KitKat) emulator:

01-05 15:11:39.926 4187-4205/? E/AndroidRuntime: FATAL EXCEPTION: RxComputationScheduler-2
    Process: eu.kanade.tachiyomi.debug:acra, PID: 4187
    java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
        at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:59)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
     Caused by: java.lang.ExceptionInInitializerError
        at okhttp3.internal.platform.Platform$Companion.findPlatform(Platform.kt:211)
        at okhttp3.internal.platform.Platform$Companion.access$findPlatform(Platform.kt:179)
        at okhttp3.internal.platform.Platform.<clinit>(Platform.kt:180)
        at okhttp3.internal.tls.CertificateChainCleaner$Companion.get(CertificateChainCleaner.kt:42)
        at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.kt:728)
        at eu.kanade.tachiyomi.network.NetworkHelper.enableTLS12(NetworkHelper.kt:100)
        at eu.kanade.tachiyomi.network.NetworkHelper.<init>(NetworkHelper.kt:27)
        at eu.kanade.tachiyomi.AppModule$registerInjectables$5.invoke(AppModule.kt:32)
        at eu.kanade.tachiyomi.AppModule$registerInjectables$5.invoke(AppModule.kt:18)
        at uy.kohesive.injekt.registry.default.DefaultRegistrar$addSingletonFactory$1$$special$$inlined$getOrPut$lambda$1.invoke(DefaultRegistrar.kt:49)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at uy.kohesive.injekt.registry.default.DefaultRegistrar$addSingletonFactory$1.invoke(DefaultRegistrar.kt:173)
        at uy.kohesive.injekt.registry.default.DefaultRegistrar.getInstance(DefaultRegistrar.kt:103)
        at eu.kanade.tachiyomi.AppModule$registerInjectables$12.invoke(AppModule.kt:64)
        at eu.kanade.tachiyomi.AppModule$registerInjectables$12.invoke(AppModule.kt:18)
        at eu.kanade.tachiyomi.AppModule$rxAsync$1.call(AppModule.kt:59)
        at eu.kanade.tachiyomi.AppModule$rxAsync$1.call(AppModule.kt:18)
        at rx.internal.operators.OnSubscribeFromCallable.call(OnSubscribeFromCallable.java:48)
        at rx.internal.operators.OnSubscribeFromCallable.call(OnSubscribeFromCallable.java:33)
        at rx.Observable.unsafeSubscribe(Observable.java:10327)
        at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
        at rx.internal.schedulers.EventLoopsScheduler$EventLoopWorker$1.call(EventLoopsScheduler.java:172)
        at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)聽
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)聽
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)聽
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)聽
        at java.lang.Thread.run(Thread.java:841)聽
     Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
        at okhttp3.internal.platform.AndroidPlatform.<clinit>(AndroidPlatform.kt:232)
        at okhttp3.internal.platform.Platform$Companion.findPlatform(Platform.kt:211)聽
        at okhttp3.internal.platform.Platform$Companion.access$findPlatform(Platform.kt:179)聽
        at okhttp3.internal.platform.Platform.<clinit>(Platform.kt:180)聽
        at okhttp3.internal.tls.CertificateChainCleaner$Companion.get(CertificateChainCleaner.kt:42)聽
        at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.kt:728)聽
        at eu.kanade.tachiyomi.network.NetworkHelper.enableTLS12(NetworkHelper.kt:100)聽
        at eu.kanade.tachiyomi.network.NetworkHelper.<init>(NetworkHelper.kt:27)聽
        at eu.kanade.tachiyomi.AppModule$registerInjectables$5.invoke(AppModule.kt:32)聽
        at eu.kanade.tachiyomi.AppModule$registerInjectables$5.invoke(AppModule.kt:18)聽
        at uy.kohesive.injekt.registry.default.DefaultRegistrar$addSingletonFactory$1$$special$$inlined$getOrPut$lambda$1.invoke(DefaultRegistrar.kt:49)聽
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)聽
        at uy.kohesive.injekt.registry.default.DefaultRegistrar$addSingletonFactory$1.invoke(DefaultRegistrar.kt:173)聽
        at uy.kohesive.injekt.registry.default.DefaultRegistrar.getInstance(DefaultRegistrar.kt:103)聽
        at eu.kanade.tachiyomi.AppModule$registerInjectables$12.invoke(AppModule.kt:64)聽
        at eu.kanade.tachiyomi.AppModule$registerInjectables$12.invoke(AppModule.kt:18)聽
        at eu.kanade.tachiyomi.AppModule$rxAsync$1.call(AppModule.kt:59)聽
        at eu.kanade.tachiyomi.AppModule$rxAsync$1.call(AppModule.kt:18)聽
        at rx.internal.operators.OnSubscribeFromCallable.call(OnSubscribeFromCallable.java:48)聽
        at rx.internal.operators.OnSubscribeFromCallable.call(OnSubscribeFromCallable.java:33)聽
        at rx.Observable.unsafeSubscribe(Observable.java:10327)聽
        at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)聽
        at rx.internal.schedulers.EventLoopsScheduler$EventLoopWorker$1.call(EventLoopsScheduler.java:172)聽
        at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)聽
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)聽
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)聽
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)聽
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)聽
        at java.lang.Thread.run(Thread.java:841)聽

Oddly enough, it didn't crash in an API 16 (Jelly Bean) emulator.

This is due to OkHttp dropping support for Android 4.x: https://developer.squareup.com/blog/okhttp-3-13-requires-android-5/

But we require the new version of OkHttp to work in conjunction with the latest versions of Retrofit, which is required for AndroidX, which is required for the latest versions of the Android SDK.

bug

Most helpful comment

Yea it sucks ereader companies are slacking

All 17 comments

We might have to finally drop support for Android 4.x.

It's been a long ride, honestly though people should upgrade their device now, Android 4 is ancient history

I imagine if people are using devices that old odds are that it's because upgrading would be a burden (financial or otherwise).

Android 4.4.4 is 5 years old, which isn't _that_ old. That said, those users can still use an older version of Tachiyomi (e.g. v0.8.4).

This was something expected. I'm one of those few users with KitKat (I don't really want to specify the reasons I'm still using this old brick of a phone).
Dev version r1571 still works for me so I'll hold on to it as much as I can.

This was something expected. I'm one of those few users with KitKat (I don't really want to specify the reasons I'm still using this old brick of a phone).
Dev version r1571 still works for me so I'll hold on to it as much as I can.

Is 1571 still the only one working for you? I also have 1571 but strangely, ever since Jan 8 I never got any updates from any manga other than Solo Leveling on Jan 16(UTC +8) just recently, Not sure it's a coincidence but I've got Bocu no Hero Academia, Dr. Stone, and Demon Slayer that had consistently gets updates every week(or atleast every other week), but now not from the 30+ mangas got an update except solo leveling.

Just incase. are you still using Android 4.4.#.. I was thinking of installing those 3rd party OS like Lineage, I don't think it supports 4.4.# that's why I'm looking.

I also heard of those Android requirement editors, to edit the Android requirement to the version u want. Tho I may not look like it but I frequent in mod forums.

This was something expected. I'm one of those few users with KitKat (I don't really want to specify the reasons I'm still using this old brick of a phone).
Dev version r1571 still works for me so I'll hold on to it as much as I can.

Is 1571 still the only one working for you? I also have 1571 but strangely, ever since Jan 8 I never got any updates from any manga other than Solo Leveling on Jan 16(UTC +8) just recently, Not sure it's a coincidence but I've got Bocu no Hero Academia, Dr. Stone, and Demon Slayer that had consistently gets updates every week(or atleast every other week), but now not from the 30+ mangas got an update except solo leveling.

Just incase. are you still using Android 4.4.#.. I was thinking of installing those 3rd party OS like Lineage, I don't think it supports 4.4.# that's why I'm looking.

I also heard of those Android requirement editors, to edit the Android requirement to the version u want. Tho I may not look like it but I frequent in mod forums.

It works just fine, I have had no problem so far. Maybe it has not been updated in the source you're using, try migrating to another one. I'm using the stock rom, never tried LineageOS so I'm afraid I can't help you with that, what I do know is that, although you can change the mininum sdk of an apk with some specialized app (like Apk Editor) it doesn't guarantee it would work, also in the newer dev versions everything that made the app compatible with Android 4.4.x was removed.

This was something expected. I'm one of those few users with KitKat (I don't really want to specify the reasons I'm still using this old brick of a phone).
Dev version r1571 still works for me so I'll hold on to it as much as I can.

Is 1571 still the only one working for you? I also have 1571 but strangely, ever since Jan 8 I never got any updates from any manga other than Solo Leveling on Jan 16(UTC +8) just recently, Not sure it's a coincidence but I've got Bocu no Hero Academia, Dr. Stone, and Demon Slayer that had consistently gets updates every week(or atleast every other week), but now not from the 30+ mangas got an update except solo leveling.
Just incase. are you still using Android 4.4.#.. I was thinking of installing those 3rd party OS like Lineage, I don't think it supports 4.4.# that's why I'm looking.
I also heard of those Android requirement editors, to edit the Android requirement to the version u want. Tho I may not look like it but I frequent in mod forums.

It works just fine, I have had no problem so far. Maybe it has not been updated in the source you're using, try migrating to another one. I'm using the stock rom, never tried LineageOS so I'm afraid I can't help you with that, what I do know is that, although you can change the mininum sdk of an apk with some specialized app (like Apk Editor) it doesn't guarantee it would work, also in the newer dev versions everything that made the app compatible with Android 4.4.x was removed.

Everything is working so far, got the updates a few days after I posted. Is 1571 still the only one working for you?

As a sign of appreciation, I suggest this manga Uzaki-chan wa Asobitai! I personally sourced from mangasee but u can source from anywhere u like.

This was something expected. I'm one of those few users with KitKat (I don't really want to specify the reasons I'm still using this old brick of a phone).
Dev version r1571 still works for me so I'll hold on to it as much as I can.

Is r1571 still the only one working for you?

you can use 8.5 its the last stable/dev build that will work with android 4.x

That is really sad since there are still a lot of e-ink readers running android 4.4. Hell, many of those readers still sold in stores (Nook Glowlight 3, any Tolino reader).
I hope 0.85 build will last long enough...

Yea it sucks ereader companies are slacking

But we require the new version of OkHttp to work in conjunction with the latest versions of Retrofit, which is required for AndroidX, which is required for the latest versions of the Android SDK.

I'm sorry for being late to the party, and maybe still missing something..

But while I could indeed find that Retrofit 2.7x needs OkHttp >3.12
And that AndroidX is kind-of-heavily-recommended in newer SDKs (even though perhaps not literally enforced)

I'm missing the Retrofit-AndroidX link. In fact word of god seemed to rule out that. Did you mean coroutines perhaps?
They should be supported in the 2.6 branch, which is still being maintained and doesn't seem to lack anything important.

To be honest, I don't actually remember. Maybe the build failures I was having at the time were unrelated, but I'm not looking back at this point either considering Android 4.x users account for ~1.3% of total users and introduces other headaches beyond just Retrofit/OkHttp.

I would guess because J2K had just updated okhttp to the latest version available at the time without restraints, and period. But it wasn't mandatory for newer retrofit.

Well, so much for my tolino 馃嚝

I'm pretty sure the J2K fork dropped 4.x support way before the main app did though.

Yes, and #2424 inadvertently pulled in some of those assumptions.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

farahnur42 picture farahnur42  路  3Comments

squadz3 picture squadz3  路  3Comments

basilg3 picture basilg3  路  3Comments

nataliejean2412 picture nataliejean2412  路  4Comments

ElerTheMagnanimous picture ElerTheMagnanimous  路  3Comments