Well, Onyx does a few peculiar things to Android when they put together their firmware!
I'll try to install a recent nightly again today and then do adb logcat. I can then report any error messages. Thanks.
Edit: For convenience's sake, I tried the installation through adb, and then ran a logcat. This seems to be the relevant part of the logcat:
04-19 08:05:09.845 2737 2747 D DefContainer: Copying /data/local/tmp/koreader-android-arm-linux-androideabi-v2015.11-1654-g666c9f1_2018-04-12.apk to base.apk
04-19 08:05:10.365 609 634 W PackageManager: Package org.koreader.launcher signatures do not match the previously installed version; ignoring!
04-19 08:05:11.298 609 634 I art : Starting a blocking GC Explicit
04-19 08:05:11.312 609 2079 I ActivityManager: Killing 1674:com.onyx.android.production.test/u0a43 (adj 15): empty #17
04-19 08:05:11.378 609 634 I art : Explicit concurrent mark sweep GC freed 40503(2MB) AllocSpace objects, 8(144KB) LOS objects, 33% free, 8MB/12MB, paused 1.501ms total 80.229ms
04-19 08:05:11.381 2757 2757 I sh : type=1400 audit(0.0:77): avc: denied { read } for name="lib" dev="mmcblk0p13" ino=13 scontext=u:r:shell:s0 tcontext=u

bject_r:unlabeled:s0 tclass=lnk_file permissive=1
04-19 08:05:11.381 2728 2728 I art : System.exit called, status: 1
04-19 08:05:11.381 2728 2728 I AndroidRuntime: VM exiting with result code 1.
04-19 08:05:11.388 191 191 E SurfaceFlinger: App die 1674 0
04-19 08:05:15.002 609 609 E PowerManager: WakeLock under-locked: *alarm*
04-19 08:05:16.990 2330 2451 V ClClient: SEND(13) KeepAliveRequest_4{} UID:8d73ecd2-739c-42e4-a2bd-2f73aa312e7c
04-19 08:05:17.025 609 1849 I MediaFocusControl: AudioFocus abandonAudioFocus() from
android.media.AudioManager@705ce5eco...music.M ediaPlaybackService$3@d0db23f
04-19 08:05:17.027 609 717 I ActivityManager: Killing 1019:com.onyx.music/u0a52 (adj 15): empty #17