6

我在我的应用程序中使用geolocatorpermission_handler包,但现在这两个包分别有不同compileSdkVersion30要求31。我正在尝试更改 compileSdkVersion 但它不再起作用

现在,如果我切换到 30,则会出现以下错误

    Launching lib\main.dart on INE LX1r in debug mode...
    Parameter format not correct -
    Note: C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\contacts_service-0.4.6\android\src\main\java\flutter\plugins\contactsservice\contactsservice\ContactsServicePlugin.java uses or overrides a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionManager.java:321: error: cannot find symbol
                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
                                                               ^
      symbol:   variable S
      location: class VERSION_CODES
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:72: error: cannot find symbol
                case Manifest.permission.BLUETOOTH_SCAN:
                                        ^
      symbol:   variable BLUETOOTH_SCAN
      location: class permission
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:74: error: cannot find symbol
                case Manifest.permission.BLUETOOTH_ADVERTISE:
                                        ^
      symbol:   variable BLUETOOTH_ADVERTISE
      location: class permission
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:76: error: cannot find symbol
                case Manifest.permission.BLUETOOTH_CONNECT:
                                        ^
      symbol:   variable BLUETOOTH_CONNECT
      location: class permission
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:259: error: cannot find symbol
                    String result = determineBluetoothPermission(context, Manifest.permission.BLUETOOTH_SCAN);
                                                                                             ^
      symbol:   variable BLUETOOTH_SCAN
      location: class permission
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:270: error: cannot find symbol
                    String result = determineBluetoothPermission(context, Manifest.permission.BLUETOOTH_ADVERTISE);
                                                                                             ^
      symbol:   variable BLUETOOTH_ADVERTISE
      location: class permission
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:281: error: cannot find symbol
                    String result = determineBluetoothPermission(context, Manifest.permission.BLUETOOTH_CONNECT);
                                                                                             ^
      symbol:   variable BLUETOOTH_CONNECT
      location: class permission
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\permission_handler-8.2.5\android\src\main\java\com\baseflow\permissionhandler\PermissionUtils.java:370: error: cannot find symbol
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && hasPermissionInManifest(context, null, permission )) {
                                                            ^
      symbol:   variable S
      location: class VERSION_CODES
    8 errors
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':permission_handler: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 22s
    Exception: Gradle task assembleDebug failed with exit code 1
    Exited (sigterm)

当我切换到 31 时,它会出现以下错误

    Launching lib\main.dart on INE LX1r in debug mode...
    Parameter format not correct -
    Note: C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\contacts_service-0.4.6\android\src\main\java\flutter\plugins\contactsservice\contactsservice\ContactsServicePlugin.java uses or overrides a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\geolocator_android-1.0.0\android\src\main\java\com\baseflow\geolocator\location\LocationManagerClient.java:10: warning: [deprecation] LocationProvider in android.location has been deprecated
    import android.location.LocationProvider;
                           ^
    error: warnings found and -Werror specified
    C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\geolocator_android-1.0.0\android\src\main\java\com\baseflow\geolocator\location\LocationMapper.java:29: warning: [deprecation] isFromMockProvider() in Location has been deprecated
          position.put("is_mocked", location.isFromMockProvider());
                                            ^
    1 error
    2 warnings
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':geolocator_android: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 18s
    Exception: Gradle task assembleDebug failed with exit code 1
    Exited (sigterm)

现在我该怎么做?

4

1 回答 1

15

我经历了同样的经历并按照以下程序修复了它

在我的应用程序中,我使用以下依赖项:

permission_handler: ^8.2.5
geolocator: ^7.7.0
geocoding: ^2.0.1

确保以下几点:

build.gradle:
   compileSdkVersion 31

gradle.properties:
   android.useAndroidX=true
   android.enableJetifier=true

和所有其他安卓。必须将依赖项替换为它们的 AndroidX 对应项。

在这之后:

flutter upgrade
flutter pub get
flutter clean
flutter build apk --release

如果问题仍然存在:

1) Restart the computer, cross your fingers.
于 2021-10-15T12:24:04.443 回答