naman14 / TimberX

Material theme music player that works across all form factors (phones, wear, auto, cast, assistant) and uses latest tools (Kotlin, Architecture components, Room, Databinding)

Home Page:https://namand.in

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crash on opening the app - Clone and run

lohriialo opened this issue · comments

App version: 1.5
Android Studio Version: 3.3.1

Steps to reproduce:

  1. Clone repo from github
  2. Add your own google-services.json
  3. Build and run project

Result: Crash

Crash log:

2019-02-27 00:01:17.769 23477-23515/com.naman14.timberx E/KOIN: [ERROR] - Error while resolving instance for class 'com.naman14.timberx.playback.players.SongPlayer' - error: org.koin.error.BeanInstanceCreationException: Can't create definition for 'Factory [name='RealSongPlayer',class='com.naman14.timberx.playback.players.RealSongPlayer', binds~(com.naman14.timberx.playback.players.SongPlayer)]' due to error :
    		Can't create handler inside thread Thread[DefaultDispatcher-worker-1,5,main] that has not called Looper.prepare()
    		android.os.Handler.<init>(Handler.java:205)
    		android.os.Handler.<init>(Handler.java:118)
    		android.support.v4.media.session.MediaSessionCompat.setCallback(MediaSessionCompat.java:550)
    		android.support.v4.media.session.MediaSessionCompat.setCallback(MediaSessionCompat.java:535)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:495)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:456)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:430)
    		com.naman14.timberx.playback.players.RealSongPlayer.<init>(SongPlayer.kt:142)
    		com.naman14.timberx.playback.MediaModuleKt$mediaModule$1$3.invoke(MediaModule.kt:36)
    		com.naman14.timberx.playback.MediaModuleKt$mediaModule$1$3.invoke(Unknown Source:2)
    		org.koin.core.instance.holder.InstanceHolder$DefaultImpls.create(InstanceHolder.kt:17)
    		org.koin.core.instance.holder.FactoryInstanceHolder.create(FactoryInstanceHolder.kt:10)
    		org.koin.core.instance.holder.FactoryInstanceHolder.get(FactoryInstanceHolder.kt:13)
    		org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:53)
    		org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:138)
    		org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:39)
    		org.koin.core.stack.ResolutionStack.resolve(ResolutionStack.kt:44)
    		org.koin.core.instance.InstanceRegistry.resolveInstance(InstanceRegistry.kt:137)
    		org.koin.core.instance.InstanceRegistry.access$resolveInstance(InstanceRegistry.kt:39)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:98)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:39)
    		org.koin.core.time.DurationKt.logDuration(Duration.kt:11)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:97)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:39)
    		org.koin.core.time.DurationKt.measureDuration(Duration.kt:19)
    		org.koin.core.instance.InstanceRegistry.proceedResolution(InstanceRegistry.kt:87)
    		org.koin.core.instance.InstanceRegistry.resolve(InstanceRegistry.kt:61)
    		com.naman14.timberx.playback.TimberMusicService$$special$$inlined$inject$7.invoke(ComponentCallbacksExt.kt:147)
    		kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    		com.naman14.timberx.playback.TimberMusicService.getPlayer(Unknown Source:26)
    		com.naman14.timberx.playback.TimberMusicService.access$getPlayer$p(TimberMusicService.kt:66)
    		com.naman14.timberx.playback.TimberMusicService$onCreate$1$1.invokeSuspend(TimberMusicService.kt:114)
    		kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
    		kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
    		kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
    		kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
    		kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742) 
2019-02-27 00:01:17.866 23477-23515/com.naman14.timberx E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
    Process: com.naman14.timberx, PID: 23477
    org.koin.error.BeanInstanceCreationException: Can't create definition for 'Factory [name='RealSongPlayer',class='com.naman14.timberx.playback.players.RealSongPlayer', binds~(com.naman14.timberx.playback.players.SongPlayer)]' due to error :
    		Can't create handler inside thread Thread[DefaultDispatcher-worker-1,5,main] that has not called Looper.prepare()
    		android.os.Handler.<init>(Handler.java:205)
    		android.os.Handler.<init>(Handler.java:118)
    		android.support.v4.media.session.MediaSessionCompat.setCallback(MediaSessionCompat.java:550)
    		android.support.v4.media.session.MediaSessionCompat.setCallback(MediaSessionCompat.java:535)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:495)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:456)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:430)
    		com.naman14.timberx.playback.players.RealSongPlayer.<init>(SongPlayer.kt:142)
    		com.naman14.timberx.playback.MediaModuleKt$mediaModule$1$3.invoke(MediaModule.kt:36)
    		com.naman14.timberx.playback.MediaModuleKt$mediaModule$1$3.invoke(Unknown Source:2)
    		org.koin.core.instance.holder.InstanceHolder$DefaultImpls.create(InstanceHolder.kt:17)
    		org.koin.core.instance.holder.FactoryInstanceHolder.create(FactoryInstanceHolder.kt:10)
    		org.koin.core.instance.holder.FactoryInstanceHolder.get(FactoryInstanceHolder.kt:13)
    		org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:53)
    		org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:138)
    		org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:39)
    		org.koin.core.stack.ResolutionStack.resolve(ResolutionStack.kt:44)
    		org.koin.core.instance.InstanceRegistry.resolveInstance(InstanceRegistry.kt:137)
    		org.koin.core.instance.InstanceRegistry.access$resolveInstance(InstanceRegistry.kt:39)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:98)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:39)
    		org.koin.core.time.DurationKt.logDuration(Duration.kt:11)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:97)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:39)
    		org.koin.core.time.DurationKt.measureDuration(Duration.kt:19)
    		org.koin.core.instance.InstanceRegistry.proceedResolution(InstanceRegistry.kt:87)
    		org.koin.core.instance.InstanceRegistry.resolve(InstanceRegistry.kt:61)
    		com.naman14.timberx.playback.TimberMusicService$$special$$inlined$inject$7.invoke(ComponentCallbacksExt.kt:147)
    		kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    		com.naman14.timberx.playback.TimberMusicService.getPlayer(Unknown Source:26)
    		com.naman14.timberx.playback.TimberMusicService.access$getPlayer$p(TimberMusicService.kt:66)
    		com.naman14.timberx.playback.TimberMusicService$onCreate$1$1.invokeSuspend(TimberMusicService.kt:114)
    		kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
    		kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
    		kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
    		kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
    		kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
        at org.koin.core.instance.holder.InstanceHolder$DefaultImpls.create(InstanceHolder.kt:23)
        at org.koin.core.instance.holder.FactoryInstanceHolder.create(FactoryInstanceHolder.kt:10)
        at org.koin.core.instance.holder.FactoryInstanceHolder.get(FactoryInstanceHolder.kt:13)
        at org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:53)
2019-02-27 00:01:17.866 23477-23515/com.naman14.timberx E/AndroidRuntime:     at org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:138)
        at org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:39)
        at org.koin.core.stack.ResolutionStack.resolve(ResolutionStack.kt:44)
        at org.koin.core.instance.InstanceRegistry.resolveInstance(InstanceRegistry.kt:137)
        at org.koin.core.instance.InstanceRegistry.access$resolveInstance(InstanceRegistry.kt:39)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:98)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:39)
        at org.koin.core.time.DurationKt.logDuration(Duration.kt:11)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:97)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:39)
        at org.koin.core.time.DurationKt.measureDuration(Duration.kt:19)
        at org.koin.core.instance.InstanceRegistry.proceedResolution(InstanceRegistry.kt:87)
        at org.koin.core.instance.InstanceRegistry.resolve(InstanceRegistry.kt:61)
        at com.naman14.timberx.playback.TimberMusicService$$special$$inlined$inject$7.invoke(ComponentCallbacksExt.kt:147)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.naman14.timberx.playback.TimberMusicService.getPlayer(Unknown Source:26)
        at com.naman14.timberx.playback.TimberMusicService.access$getPlayer$p(TimberMusicService.kt:66)
        at com.naman14.timberx.playback.TimberMusicService$onCreate$1$1.invokeSuspend(TimberMusicService.kt:114)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
        at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
2019-02-27 00:01:17.866 23477-23515/com.naman14.timberx E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
    Process: com.naman14.timberx, PID: 23477
    org.koin.error.BeanInstanceCreationException: Can't create definition for 'Factory [name='RealSongPlayer',class='com.naman14.timberx.playback.players.RealSongPlayer', binds~(com.naman14.timberx.playback.players.SongPlayer)]' due to error :
    		Can't create handler inside thread Thread[DefaultDispatcher-worker-1,5,main] that has not called Looper.prepare()
    		android.os.Handler.<init>(Handler.java:205)
    		android.os.Handler.<init>(Handler.java:118)
    		android.support.v4.media.session.MediaSessionCompat.setCallback(MediaSessionCompat.java:550)
    		android.support.v4.media.session.MediaSessionCompat.setCallback(MediaSessionCompat.java:535)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:495)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:456)
    		android.support.v4.media.session.MediaSessionCompat.<init>(MediaSessionCompat.java:430)
    		com.naman14.timberx.playback.players.RealSongPlayer.<init>(SongPlayer.kt:142)
    		com.naman14.timberx.playback.MediaModuleKt$mediaModule$1$3.invoke(MediaModule.kt:36)
    		com.naman14.timberx.playback.MediaModuleKt$mediaModule$1$3.invoke(Unknown Source:2)
    		org.koin.core.instance.holder.InstanceHolder$DefaultImpls.create(InstanceHolder.kt:17)
    		org.koin.core.instance.holder.FactoryInstanceHolder.create(FactoryInstanceHolder.kt:10)
    		org.koin.core.instance.holder.FactoryInstanceHolder.get(FactoryInstanceHolder.kt:13)
    		org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:53)
    		org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:138)
    		org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:39)
    		org.koin.core.stack.ResolutionStack.resolve(ResolutionStack.kt:44)
    		org.koin.core.instance.InstanceRegistry.resolveInstance(InstanceRegistry.kt:137)
    		org.koin.core.instance.InstanceRegistry.access$resolveInstance(InstanceRegistry.kt:39)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:98)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:39)
    		org.koin.core.time.DurationKt.logDuration(Duration.kt:11)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:97)
    		org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:39)
    		org.koin.core.time.DurationKt.measureDuration(Duration.kt:19)
    		org.koin.core.instance.InstanceRegistry.proceedResolution(InstanceRegistry.kt:87)
    		org.koin.core.instance.InstanceRegistry.resolve(InstanceRegistry.kt:61)
    		com.naman14.timberx.playback.TimberMusicService$$special$$inlined$inject$7.invoke(ComponentCallbacksExt.kt:147)
    		kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    		com.naman14.timberx.playback.TimberMusicService.getPlayer(Unknown Source:26)
    		com.naman14.timberx.playback.TimberMusicService.access$getPlayer$p(TimberMusicService.kt:66)
    		com.naman14.timberx.playback.TimberMusicService$onCreate$1$1.invokeSuspend(TimberMusicService.kt:114)
    		kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
    		kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
    		kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
    		kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
    		kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
        at org.koin.core.instance.holder.InstanceHolder$DefaultImpls.create(InstanceHolder.kt:23)
        at org.koin.core.instance.holder.FactoryInstanceHolder.create(FactoryInstanceHolder.kt:10)
        at org.koin.core.instance.holder.FactoryInstanceHolder.get(FactoryInstanceHolder.kt:13)
        at org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:53)
2019-02-27 00:01:17.867 23477-23515/com.naman14.timberx E/AndroidRuntime:     at org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:138)
        at org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:39)
        at org.koin.core.stack.ResolutionStack.resolve(ResolutionStack.kt:44)
        at org.koin.core.instance.InstanceRegistry.resolveInstance(InstanceRegistry.kt:137)
        at org.koin.core.instance.InstanceRegistry.access$resolveInstance(InstanceRegistry.kt:39)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:98)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:39)
        at org.koin.core.time.DurationKt.logDuration(Duration.kt:11)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:97)
        at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:39)
        at org.koin.core.time.DurationKt.measureDuration(Duration.kt:19)
        at org.koin.core.instance.InstanceRegistry.proceedResolution(InstanceRegistry.kt:87)
        at org.koin.core.instance.InstanceRegistry.resolve(InstanceRegistry.kt:61)
        at com.naman14.timberx.playback.TimberMusicService$$special$$inlined$inject$7.invoke(ComponentCallbacksExt.kt:147)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.naman14.timberx.playback.TimberMusicService.getPlayer(Unknown Source:26)
        at com.naman14.timberx.playback.TimberMusicService.access$getPlayer$p(TimberMusicService.kt:66)
        at com.naman14.timberx.playback.TimberMusicService$onCreate$1$1.invokeSuspend(TimberMusicService.kt:114)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
        at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
2019-02-27 00:01:18.162 23477-23511/com.naman14.timberx E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-02-27 00:01:18.170 23477-23511/com.naman14.timberx E/libc: Access denied finding property "vendor.debug.egl.swapinterval"

Just an FYI, things that are more than one line should be wrapped in 3 ticks (```) rather than 1 😄

Should be fixed on the master branch now

Just an FYI, things that are more than one line should be wrapped in 3 ticks (```) rather than 1 😄

Gotya! 😄