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
相关产品推荐
相关产品推荐

