上周我开始使用Flutter,但我的音频播放器软件包出现了这个问题。我正在Udemy用Dart进行Flutter开发训练营。我几乎遵循了视频中的所有内容,但我收到了一个巨大的错误信息,我无法解决。
这是我的代码:
import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
void main() => runApp(XylophoneApp());
class XylophoneApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.lightBlue,
body: SafeArea(
child: Container(
child: Center(
child: TextButton(
onPressed: (){
final player = AudioCache();
player.play('assets/note1');
},
child: Text(
'click me'
),
),
),
),
),
),
);
}
}
这是我得到的错误消息:正在运行Gradle任务"assembleDebug ..." e:在依赖项中发现不兼容的类。请从类路径中删除这些类或使用"-Xskip-metadata-version-check"隐藏错误e:C:/用户/victo/. gradle/缓存/转换-2/文件-2.1/24fa3aa8d2270e5eb067bbe36e9b7563/jetified-kotlin-标准数据库-1.5.10.jar !/元信息/kotlin-标准数据库. kotlin_模块:模块是用不兼容版本的Kotlin编译的。其元数据的二进制版本是1.5.1,预期版本是1.1.15 ...(消息比这大得多)
- 出了什么问题:执行任务":audiopeers:compileDebugKotlin"失败。
编译错误。有关详细信息,请参阅日志
- 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的见解。
- 从https://help.gradle.org获取更多帮助
构建在21s内失败,异常:Gradle任务assembleDebug失败,退出代码为1
- 我已经看到此消息元数据的二进制版本是1.5.1,预期版本是1.1.15**,但我不知道如何处理它或如何解决它。
这是我的博客。
name: xylophone
description: A new Flutter application.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
audioplayers: ^0.19.1
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- assets/
5条答案
按热度按时间bqf10yzr1#
在gradle文件中,转至build.gradle(项目:然后,更改以下代码(在buildscript中):
从
到
或者什么曾经最新版本的Kotlin可用,并确保更新Kotlin版本的Android Studio以及
按照说明操作后,您的错误将得到解决。
rggaifut2#
您可以查看错误日志
Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15
,但尝试1.3.50
,我有应用程序与音频播放器我使用这个版本,如果它不工作使用1.1.15
或建议的版本后,更改版本卸载应用程序并运行flutter清理并再次运行尝试在build.gradle中降级到较低的Kotlin版本
如果在以下情况下不起作用,也请参考此答案
sy5wg1nm3#
迁移指南
依赖性:音频播放器:^0.x.x
到
依赖性:音频播放器:^1.0.1
https://github.com/bluefireteam/audioplayers/blob/main/migration_guide.md
try with this
AudioCache已经死了,源代码万岁其中一个主要的变化是我想“杀死”AudioCache API,因为它给用户带来了巨大的混乱(尽管我们尽了最大的努力记录一切)。
我们仍然有AudioCache类,但它的API专门用于将资产文件转换为本地文件、缓存它们并提供路径。然而,它通常不需要由最终用户使用,因为AudioPlayer本身现在能够播放来自任何源的音频。
什么是源?它是一个密封类,可以是以下类型之一:
UrlSource:从Internet设备的远程URL获取音频FileSource:访问用户设备中的文件,该文件可能由文件选取器AssetSource选择:播放与您的应用捆绑在一起的资源,通常位于资源目录BytesSource中(仅限部分平台):直接传入音频字节(从任何地方读取)。如果使用AssetSource,AudioPlayer将自动使用其AudioCache示例(如果未更改,默认为全局缓存)。这将统一AudioPlayer下的所有播放API,并为大多数用户完全删除AudioCache细节。
l0oc07j24#
如果您使用的是最新版本的audioplayers(在我的示例中是
^1.0.1
),则代码应该如下所示祝你在学习中一切顺利
yk9xbfzb5#
根据最新的稳定版本,AudioCache()处理得不好,您可以尝试以下操作
注:在player.play(AssetSource('s1.wav'))中-在s1.wav的位置,仅给予文件名,而不是给出完整路径,如assets/s1.wav