求助:使用Last F.M获取专辑封面时依赖库无法正常工作
问题分析与解决
核心问题原因
你引入的de.u-mass:lastfm-java:0.1.2依赖无法正常解析,报错找不到0.1.1版本,主要有两个关键原因:
- 旧版本的lastfm-java托管在已停止服务的JCenter仓库,当前默认Gradle配置(仅Maven Central/Google仓库)无法拉取到该旧版本的依赖链。
- 你代码中的API key字符串带有换行符,会导致Last.fm接口鉴权失败。
解决方案
1. 更换为最新版lastfm-java依赖
放弃老旧版本,使用发布在Maven Central的最新稳定版,同时确保项目配置了正确的仓库:
- 在项目根目录的
settings.gradle中添加Maven Central仓库(如果未添加):
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 必须添加这一行 } }
- 在App模块的
build.gradle中替换依赖为最新版本:
implementation 'de.u-mass:lastfm-java:2.0.0'
2. 修复API key的换行问题
代码里API key字符串末尾的换行符会导致接口请求失败,需直接写成完整字符串:
Track track = Track.getInfo(artist, title, "8a31c329f76d81616598db6780537edf");
3. 优化艺术家与标题的分割逻辑
当前用split("-")分割,如果标题本身包含-,会导致数组越界,建议修改为仅分割第一个-:
String[] parts = metaTitle.getText().toString().split("-", 2);
4. 处理网络请求线程问题
直接在MainActivity主线程调用Track.getInfo会触发NetworkOnMainThreadException,需将网络请求放在子线程执行,比如用Kotlin协程、Java AsyncTask或线程池处理。
内容的提问来源于stack exchange,提问作者Laurent P.
相关产品推荐
相关产品推荐

