任务“:camera:compileDebugJavaWithJavac”的执行失败。

19

我创建了一个新的Flutter项目,并添加了camera插件。在添加该依赖项后,我遇到了许多错误。我使用的Flutter版本是2.5.2minSdkVersion 21

pubspec.yaml文件中,

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.4
  camera: ^0.9.4+4

错误如下:

C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\Camera.java:23: error: cannot find symbol
import android.media.EncoderProfiles;
                    ^
  symbol:   class EncoderProfiles
  location: package android.media
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\Camera.java:935: error: cannot find symbol
  EncoderProfiles getRecordingProfile() {
  ^
  symbol:   class EncoderProfiles
  location: class Camera
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:10: error: cannot find symbol
import android.media.EncoderProfiles;
                    ^
  symbol:   class EncoderProfiles
  location: package android.media
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:29: error: cannot find symbol
  private EncoderProfiles recordingProfile;
          ^
  symbol:   class EncoderProfiles
  location: class ResolutionFeature
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:63: error: cannot find symbol
  public EncoderProfiles getRecordingProfile() {
         ^
  symbol:   class EncoderProfiles
  location: class ResolutionFeature
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:187: error: cannot find symbol
  public static EncoderProfiles getBestAvailableCamcorderProfileForResolutionPreset(
                ^
  symbol:   class EncoderProfiles
  location: class ResolutionFeature
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:8: error: cannot find symbol
import android.media.EncoderProfiles;
                    ^
  symbol:   class EncoderProfiles
  location: package android.media
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:24: error: cannot find symbol
  private final EncoderProfiles encoderProfiles;
                ^
  symbol:   class EncoderProfiles
  location: class MediaRecorderBuilder
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:36: error: cannot find symbol
      @NonNull EncoderProfiles encoderProfiles, @NonNull String outputFilePath) {
               ^
  symbol:   class EncoderProfiles
  location: class MediaRecorderBuilder
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:51: error: cannot find symbol
      @NonNull EncoderProfiles encoderProfiles,
               ^
  symbol:   class EncoderProfiles
  location: class MediaRecorderBuilder
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:186: error: cannot find symbol
  @TargetApi(Build.VERSION_CODES.S)
                                ^
  symbol:   variable S
  location: class VERSION_CODES
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\Camera.java:208: error: reference to MediaRecorderBuilder is ambiguous
      mediaRecorderBuilder = new MediaRecorderBuilder(getRecordingProfileLegacy(), outputFilePath);
                             ^
  both constructor MediaRecorderBuilder(CamcorderProfile,String) in MediaRecorderBuilder and constructor MediaRecorderBuilder(EncoderProfiles,String) in MediaRecorderBuilder match
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:118: error: cannot find symbol
      EncoderProfiles profile =
      ^
  symbol:   class EncoderProfiles
  location: class ResolutionFeature
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:120: error: package EncoderProfiles does not exist
      List<EncoderProfiles.VideoProfile> videoProfiles = profile.getVideoProfiles();
                          ^
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:121: error: package EncoderProfiles does not exist
      EncoderProfiles.VideoProfile defaultVideoProfile = videoProfiles.get(0);
                     ^
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:200: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_HIGH);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:204: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_2160P);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:208: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_1080P);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:212: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_720P);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:216: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_480P);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:220: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_QVGA);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:224: error: cannot find symbol
          return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_LOW);
                                 ^
  symbol:   method getAll(String,int)
  location: class CamcorderProfile
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:241: error: package EncoderProfiles does not exist
      List<EncoderProfiles.VideoProfile> videoProfiles = recordingProfile.getVideoProfiles();
                          ^
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:243: error: package EncoderProfiles does not exist
      EncoderProfiles.VideoProfile defaultVideoProfile = videoProfiles.get(0);
                     ^
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:32: error: reference to MediaRecorderBuilder is ambiguous
    this(camcorderProfile, outputFilePath, new MediaRecorderFactory());
    ^
  both constructor MediaRecorderBuilder(CamcorderProfile,String,MediaRecorderFactory) in MediaRecorderBuilder and constructor MediaRecorderBuilder(EncoderProfiles,String,MediaRecorderFactory) in MediaRecorderBuilder match
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:79: error: package EncoderProfiles does not exist
      EncoderProfiles.VideoProfile videoProfile = encoderProfiles.getVideoProfiles().get(0);
                     ^
C:\Users\Lakshan\Documents\SDKs\flutter\.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\media\MediaRecorderBuilder.java:80: error: package EncoderProfiles does not exist
      EncoderProfiles.AudioProfile audioProfile = encoderProfiles.getAudioProfiles().get(0);
                     ^
27 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':camera:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 16s
Exception: Gradle task assembleDebug failed with exit code 1

我尝试清除缓存,但问题仍然存在。

5个回答

29

试着将您的compileSdkVersiontargetSdkVersion更新到31。


谢谢,Dinithi。按照您提到的设置,它正在运行。但现在有一些警告,例如这些“C:\Users\Lakshan\Documents\SDKs\flutter.pub-cache\hosted\pub.dartlang.org\camera-0.9.4+4\android\src\main\java\io\flutter\plugins\camera\features\resolution\ResolutionFeature.java:154: warning: [deprecation] get(int,int) in CamcorderProfile has been deprecated return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_HIGH); ” 总共有7个警告。但比以前的错误好多了。哈哈。谢谢。 - Tharindu Lakshan
是的,这个修复方法有效,请不要尝试flutter pub cache repair,因为它会重新安装整个Flutter。 - jokermt235
2
你能再解释一下吗?为什么是版本31?问题具体是什么? - Elikill58

1

我在花了一天时间后遇到了相同的问题,得出结论我们需要升级我们的Flutter版本。

flutter upgrade

或者

flutter upgrade --force

1
使用以下命令:

flutter pub cache repair


1
我也尝试了那种方法,但是它没有被修复。:( - Tharindu Lakshan

0
尝试将您的compileSdkVersiontargetSdkVersion更改为31。 如果这不起作用,请更改您的pubspec.yaml文件并添加以下内容:
camera:
 git:
  url: https://github.com/flutter/plugins
  path: packages/camera/camera
  ref: 9e46048ad2e1f085c1e8f6c77391fa52025e681f

您可以在[camera] Fix CamcorderProfile Usages #4423中检查修复。


0
只需将您的compileSdkVersion更改为31即可。因为当我更改targetSdkVersion时,出现了更多错误。

3
这正是被接受的答案所建议的。或者您是在建议不需要或不希望设置 targetSdkVersion 吗?如果是的话,您应该 [编辑] 您的答案来解释,这样至少可以帮助未来的读者理解为什么您的答案与被接受的答案不同。 - Jeremy Caney
因为当我改变了targetSdkVersion后,出现了更多的错误,所以只改变compileSdkVersion即可。 - Prince soni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接