You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端AppleMusicKit调用createLocalController崩溃求助

解决Apple Music Kit Android播放时的UnsatisfiedLinkError崩溃

你在调用MediaPlayerControllerFactory.createLocalController时遇到的UnsatisfiedLinkError,本质是Apple Music SDK的本地库(.so文件)未正确加载或找不到对应实现,以下是针对性的解决步骤:

1. 核对SDK依赖配置完整性

确保项目正确引入了Apple Music Playback模块及相关依赖:

  • 在项目根目录的build.gradle中添加Apple的Maven仓库:
    repositories {
        maven { url 'https://appleid.apple.com/auth/keys' }
        mavenCentral()
    }
    
  • 在模块的build.gradle中声明播放相关依赖:
    dependencies {
        implementation 'com.apple.android:apple-music-playback:1.2.0' // 指定具体版本而非通配符更稳妥
        implementation 'com.apple.android:apple-music-auth:1.2.0'
    }
    

2. 限制ABI架构支持

Apple Music SDK仅支持特定CPU架构,避免打包时包含不支持的ABI导致本地库缺失:
在模块的build.gradle中配置:

android {
    defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'armeabi-v7a'
        }
    }
}

注意:不要添加x86或x86_64架构,目前Apple Music SDK未提供这些架构的本地库支持

3. 确保SDK全局初始化完成

在创建播放控制器之前,必须先完成MusicKit的全局初始化,建议在Application的onCreate方法中执行:

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        MusicKit.initialize(this)
    }
}

未初始化就调用播放相关API,会导致本地库未被正确加载。

4. 清理重建项目

缓存的构建文件可能导致依赖同步异常,执行以下操作:

  • 点击Android Studio菜单栏的Build > Clean Project
  • 随后执行Build > Rebuild Project
  • 必要时手动删除项目根目录的.gradle和模块下的build目录,再重新同步项目

5. 检查版本兼容性

确保你的Android SDK版本与Apple Music SDK兼容:

  • 避免targetSdkVersion超过33(部分旧版SDK对Android 14兼容性不佳)
  • 确保compileSdkVersion和minSdkVersion符合SDK文档要求(minSdkVersion建议不低于21)

附你的问题代码及异常信息

调用代码

val tokenProvider = object : TokenProvider {
    override fun getDeveloperToken(): String = token.developerToken
    override fun getUserToken(): String = token.userToken
}
val applePlayerController = MediaPlayerControllerFactory.createLocalController(applicationContext, tokenProvider)
val queueProviderBuilder = CatalogPlaybackQueueItemProvider.Builder()
queueProviderBuilder.containers(MediaContainerType.PLAYLIST, id) 

异常信息

java.lang.UnsatisfiedLinkError: No implementation found for int com.apple.android.music.foothill.javanative.FootHillConfig.config(java.lang.String) (tried Java_com_apple_android_music_foothill_javanative_FootHillConfig_config and Java_com_apple_android_music_foothill_javanative_FootHillConfig_config__Ljava_lang_String_2)
                                        at com.apple.android.music.foothill.javanative.FootHillConfig.config(Native Method)
                                        at com.apple.android.music.playback.c.g.a(MusicSDK:23)
                                        at com.apple.android.music.playback.c.b.<init>(MusicSDK:182)
                                        at com.apple.android.music.playback.c.f.a(MusicSDK:48)
                                        at com.apple.android.music.playback.controller.a.<init>(MusicSDK:159)
                                        at com.apple.android.music.playback.controller.MediaPlayerControllerFactory.createLocalController(MusicSDK:62)

内容的提问来源于stack exchange,提问作者Muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:12:47