Giter Club home page Giter Club logo

musicapp-kmp's Introduction

Music Player App Using Compose Multiplatform KMP

This is a music player app built using Compose Multiplatform UI that works on Android, iOS, Desktop, and Web platforms. It uses the spotify api for fetching the top 50 charts and getting the trending albums. The Google login is still in pending and for now, you need to add the spotify token manually. You can easily hit the endpoint here to get the album and then get the token and set in the app.

Live

You can find it live here

Platforms

The app uses different media players on different platforms:

For iOS, AVKit is used For Android, Media Player is used For Desktop, VLC media player is used For the Web, an HTML media player is used.

Integration with Low-Level APIs

One of the objectives of building this app was to explore how Compose UI interacts with low-level APIs. The experience was challenging yet fun, and the process taught me a lot. Out of all the media players used, integrating with the Web Media Player was the easiest. I'm grateful to IceRock Development and Aleksey Mikhailov for their demo application, which was a fantastic learning resource.

Running the app

  • Clone this repository:
git clone https://github.com/SEAbdulbasit/MusicApp-KMP.git
  • Open the project in Android Studio or IntelliJ IDEA.
  • Search for TOKEN file in the code and replace the placeholder with your Spotify access token. You can generate a new token from the Spotify Developer Dashboard.
  • Run the app on your desired platform. There are a few known issues with the Music Player app using Compose Multiplatform UI:

Known Issues

  • When you click "Select All" on Android, Web, and Desktop, the app will autoplay the selected tracks and continue playing the next track when the previous one ends. On iOS, there are issues with the callbacks for onReady and onVideoCompleted which is causing the player to not start automatically. I was unable to configure the callbacks but hopefully, will be fixing that soon.

Demo

Screenshot 2023-03-05 at 4 44 45 PM

Repository

To explore what Compose UI can do, check out the repository for the latest updates: https://github.com/SEAbdulbasit/MusicApp-KMP.

If you're interested in getting started with Compose Multiplatform, I have a template for you here: https://github.com/SEAbdulbasit/KMP-Compose-Template.

If you find my work helpful, please consider giving it a ⭐ ❤️.

Other Projects

TravelApp: https://github.com/SEAbdulbasit/TravelApp-KMP

Technologies and Libraries Used

  • Kotlin
  • Compose Multiplatform UI
  • AVKit Media Player
  • VLC media player
  • HTML media player
  • Compose Image Loader
  • Decompose

TODO

  • Add google login
  • Add local db to save favorite playlist
  • Add implementation for recent releases

musicapp-kmp's People

Contributors

atif-09 avatar ranger163 avatar seabdulbasit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

musicapp-kmp's Issues

Using wavy sliders?

Hi,

I'm doing a self-promotion here :)
Please ignore/close this if you are not interested.

Would you like to use the wavy-slider in your app?
I think Android 13 uses this kind of slider for its media player.

Demo.

Missing dependency

I tried to build, but it seems to depend on some uk. dependency which is not found.

> Task :shared:compileKotlinDesktop FAILED
1 actionable task: 1 executed
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:3:8 Unresolved reference: uk
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:4:8 Unresolved reference: uk
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:5:8 Unresolved reference: uk
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:6:8 Unresolved reference: uk
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:7:8 Unresolved reference: uk
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:11:30 Unresolved reference: MediaPlayer
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:15:9 Unresolved reference: NativeDiscovery
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:20:17 Unresolved reference: CallbackMediaPlayerComponent
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:22:17 Unresolved reference: EmbeddedMediaPlayerComponent
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:25:69 Unresolved reference: MediaPlayerEventAdapter
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:26:13 'mediaPlayerReady' overrides nothing
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:26:56 Unresolved reference: MediaPlayer
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:27:23 Unresolved reference: mediaPlayerReady
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:31:13 'finished' overrides nothing
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:31:48 Unresolved reference: MediaPlayer
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:32:23 Unresolved reference: finished
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:36:13 'error' overrides nothing
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:36:45 Unresolved reference: MediaPlayer
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:37:23 Unresolved reference: error
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:81:36 Unresolved reference: MediaPlayer
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:83:16 Unresolved reference: CallbackMediaPlayerComponent
e: file:///C:/Users/trejkaz/Projects/Kotlin/MusicApp-KMP/shared/src/desktopMain/kotlin/com/example/musicapp_kmp/player/MediaPlayerController.kt:84:16 Unresolved reference: EmbeddedMediaPlayerComponent

Just a question

In your music app, you have used vlcj media player for the JVM desktop platform , do you have vlc media player downloaded on the devices you have tested it , as when i am trying it says it can't find a library used by vlc player


Unable to load library 'libvlc':
The specified module could not be found.

The specified module could not be found.

The specified module could not be found.

Native library (win32-x86-64/libvlc.dll) not found in resource path (C:\Users\Aarav Aditya Shah\.gradle\caches\7.3.3\workerMain\gradle-worker.jar;C:\Users\Aarav Aditya Shah\Documents\GitHub\AstroPlayer\astroplayer-core\build\classes\kotlin\jvm\test;C:\Users\Aarav Aditya Shah\Documents\GitHub\AstroPlayer\astroplayer-core\build\classes\kotlin\jvm\main;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-test-junit\1.7.10\27228b08adb999a47ae98ac03e98e1f3132f83ca\kotlin-test-junit-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-test\1.7.10\4d644a88cc0a386712d4b1c1b4ca748203421e07\kotlin-test-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk8\1.7.10\d70d7d2c56371f7aa18f32e984e3e2e998fe9081\kotlin-stdlib-jdk8-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\uk.co.caprica\vlcj\4.8.2\985a60dfc18fcbac09266a3956cc61f80062e6a3\vlcj-4.8.2.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk7\1.7.10\1ef73fee66f45d52c67e2aca12fd945dbe0659bf\kotlin-stdlib-jdk7-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.7.10\d2abf9e77736acc4450dc4a3f707fa2c10f5099d\kotlin-stdlib-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\uk.co.caprica\vlcj-natives\4.8.1\93be7a26a6f56467163e7be9813f004c68137b13\vlcj-natives-4.8.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\13.0\919f0dfe192fb4e063e7dacadee7f8bb9a2672a9\annotations-13.0.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-platform-jpms\5.12.1\dd5c97cb2b74e2f85b708745a8c6127317b023f1\jna-platform-jpms-5.12.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-jpms\5.12.1\3e4c58e97eb819867d9b8d7a3a6005b9cd9987f7\jna-jpms-5.12.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\junit\junit\4.13.2\8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12\junit-4.13.2.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core\1.3\42a25dc3219429f0e5d060061f71acb49bf010a0\hamcrest-core-1.3.jar)
java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc':
The specified module could not be found.

The specified module could not be found.

The specified module could not be found.

Native library (win32-x86-64/libvlc.dll) not found in resource path (C:\Users\Aarav Aditya Shah\.gradle\caches\7.3.3\workerMain\gradle-worker.jar;C:\Users\Aarav Aditya Shah\Documents\GitHub\AstroPlayer\astroplayer-core\build\classes\kotlin\jvm\test;C:\Users\Aarav Aditya Shah\Documents\GitHub\AstroPlayer\astroplayer-core\build\classes\kotlin\jvm\main;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-test-junit\1.7.10\27228b08adb999a47ae98ac03e98e1f3132f83ca\kotlin-test-junit-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-test\1.7.10\4d644a88cc0a386712d4b1c1b4ca748203421e07\kotlin-test-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk8\1.7.10\d70d7d2c56371f7aa18f32e984e3e2e998fe9081\kotlin-stdlib-jdk8-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\uk.co.caprica\vlcj\4.8.2\985a60dfc18fcbac09266a3956cc61f80062e6a3\vlcj-4.8.2.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk7\1.7.10\1ef73fee66f45d52c67e2aca12fd945dbe0659bf\kotlin-stdlib-jdk7-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.7.10\d2abf9e77736acc4450dc4a3f707fa2c10f5099d\kotlin-stdlib-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\uk.co.caprica\vlcj-natives\4.8.1\93be7a26a6f56467163e7be9813f004c68137b13\vlcj-natives-4.8.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\13.0\919f0dfe192fb4e063e7dacadee7f8bb9a2672a9\annotations-13.0.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-platform-jpms\5.12.1\dd5c97cb2b74e2f85b708745a8c6127317b023f1\jna-platform-jpms-5.12.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-jpms\5.12.1\3e4c58e97eb819867d9b8d7a3a6005b9cd9987f7\jna-jpms-5.12.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\junit\junit\4.13.2\8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12\junit-4.13.2.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core\1.3\42a25dc3219429f0e5d060061f71acb49bf010a0\hamcrest-core-1.3.jar)
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:307)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:467)
	at com.sun.jna.Native.register(Native.java:1774)
	at com.sun.jna.Native.register(Native.java:1493)
	at uk.co.caprica.vlcj.binding.lib.LibVlc.<clinit>(LibVlc.java:99)
	at uk.co.caprica.vlcj.support.version.LibVlcVersion.<init>(LibVlcVersion.java:49)
	at uk.co.caprica.vlcj.factory.MediaPlayerFactory.checkVersion(MediaPlayerFactory.java:195)
	at uk.co.caprica.vlcj.factory.MediaPlayerFactory.discoverNativeLibrary(MediaPlayerFactory.java:181)
	at uk.co.caprica.vlcj.factory.MediaPlayerFactory.<init>(MediaPlayerFactory.java:108)
	at uk.co.caprica.vlcj.factory.MediaPlayerFactory.<init>(MediaPlayerFactory.java:132)
	at uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent.initMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:125)
	at uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent.<init>(EmbeddedMediaPlayerComponent.java:77)
	at uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent.<init>(EmbeddedMediaPlayerComponent.java:120)
	at com.deathsdoor.astroplayer_core.AstroPlayer.<init>(AstroPlayer.kt:17)
	at com.deathsdoor.astroplayer_core.AstroPlayer.<init>(AstroPlayer.kt)
	at com.deathsdoor.astroplayer_core.AstroPlayer$Companion.testprepare(AstroPlayer.kt:22)
	at com.deathsdoor.astroplayer_core.AstroPlayerJvmTest.init(AstroPlayer.kt:8)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
	Suppressed: java.lang.UnsatisfiedLinkError: The specified module could not be found.

		at com.sun.jna.Native.open(Native Method)
		at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:197)
		... 59 more
	Suppressed: java.lang.UnsatisfiedLinkError: The specified module could not be found.

		at com.sun.jna.Native.open(Native Method)
		at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:210)
		... 59 more
	Suppressed: java.lang.UnsatisfiedLinkError: The specified module could not be found.

		at com.sun.jna.Native.open(Native Method)
		at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:270)
		... 59 more
	Suppressed: java.io.IOException: Native library (win32-x86-64/libvlc.dll) not found in resource path (C:\Users\Aarav Aditya Shah\.gradle\caches\7.3.3\workerMain\gradle-worker.jar;C:\Users\Aarav Aditya Shah\Documents\GitHub\AstroPlayer\astroplayer-core\build\classes\kotlin\jvm\test;C:\Users\Aarav Aditya Shah\Documents\GitHub\AstroPlayer\astroplayer-core\build\classes\kotlin\jvm\main;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-test-junit\1.7.10\27228b08adb999a47ae98ac03e98e1f3132f83ca\kotlin-test-junit-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-test\1.7.10\4d644a88cc0a386712d4b1c1b4ca748203421e07\kotlin-test-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk8\1.7.10\d70d7d2c56371f7aa18f32e984e3e2e998fe9081\kotlin-stdlib-jdk8-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\uk.co.caprica\vlcj\4.8.2\985a60dfc18fcbac09266a3956cc61f80062e6a3\vlcj-4.8.2.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk7\1.7.10\1ef73fee66f45d52c67e2aca12fd945dbe0659bf\kotlin-stdlib-jdk7-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.7.10\d2abf9e77736acc4450dc4a3f707fa2c10f5099d\kotlin-stdlib-1.7.10.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\uk.co.caprica\vlcj-natives\4.8.1\93be7a26a6f56467163e7be9813f004c68137b13\vlcj-natives-4.8.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\13.0\919f0dfe192fb4e063e7dacadee7f8bb9a2672a9\annotations-13.0.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-platform-jpms\5.12.1\dd5c97cb2b74e2f85b708745a8c6127317b023f1\jna-platform-jpms-5.12.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-jpms\5.12.1\3e4c58e97eb819867d9b8d7a3a6005b9cd9987f7\jna-jpms-5.12.1.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\junit\junit\4.13.2\8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12\junit-4.13.2.jar;C:\Users\Aarav Aditya Shah\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core\1.3\42a25dc3219429f0e5d060061f71acb49bf010a0\hamcrest-core-1.3.jar)
		at com.sun.jna.Native.extractFromResourcePath(Native.java:1145)
		at com.sun.jna.NativeLib

diff drawble sizes

first thank you
second music is haram
3rd how we can support diff images sizes in compose without using vectors

Wow

can you plz give me some paid online session , I want to learn from you animations

Error while building

Caused by: org.gradle.api.internal.provider.AbstractProperty$PropertyQueryException: Failed to calculate the value of task ':androidApp:compileDebugJavaWithJavac' property 'javaCompiler'.

I had this error while trying to build

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.