【问题标题】:<package> uses or overrides a deprecated API<package> 使用或覆盖已弃用的 API
【发布时间】:2021-08-26 01:08:38
【问题描述】:

我正在尝试将我的项目升级到一些最新版本,但由于项目中的某些依赖项尚未更新,我无法获得 null-safety。

我使用了 sdk 版本 2.10,同时我更新了所有核心包,解决了所有重大更改。一些已弃用的更改(即 FlatButton 到 TextButton,尚未解决)。

我在构建解决方案时遇到了几个问题,在查阅了一些旧的 Stack 帖子后,我拼凑了 gradle 文件更新、升级到 Android Studio 等...

但是,当我将解决方案构建为使用或覆盖已弃用的 API 时,并且当它安装在虚拟设备上时,它会在启动失败且不提供错误的情况下收到警告。

我想知道我对 gradle 文件的破解是否是原因 - 我想确认这些 gradle 更新是否正确(特别是正在使用的版本)。

App > Android > build.gradle

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.3'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

App > Android > App > build.grade

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

    android {
        compileSdkVersion 29
    
        sourceSets {
            main.java.srcDirs += 'src/main/kotlin'
        }
    
        lintOptions {
            disable 'InvalidPackage'
        }
    
        defaultConfig {
            // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
            applicationId "com.<appname>.app"
            minSdkVersion 23
            targetSdkVersion 29
            versionCode flutterVersionCode.toInteger()
            versionName flutterVersionName 
        }
    
        buildTypes {
            release {
                // TODO: Add your own signing config for the release build.
                // Signing with the debug keys for now, so `flutter run --release` works.
                signingConfig signingConfigs.debug
            }
        }
    }
    
    flutter {
        source '../..'
    }
    
    apply plugin: 'com.android.application'
    
    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        implementation 'com.google.firebase:firebase-analytics:17.2.2'
        
    
    }
    
    apply plugin: 'com.google.gms.google-services'

app > android > wrapper > gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

pubspec.yaml 包版本:

cloud_firestore: ^2.2.1
firebase_auth: ^1.2.0
firebase_core: ^1.2.0
firebase_analytics: ^8.1.0
cloud_functions: ^1.1.0
firebase_storage: ^8.1.0
firebase_messaging: ^10.0.0  
google_sign_in: ^5.0.4
devicelocale: ^0.3.2
image_cropper: ^1.4.0
local_auth: ^1.1.6

pubspec.yaml SDK 版本

environment:
  sdk: ">=2.10.0 <3.0.0"

调试控制台警告/注意:

在应用程序中运行“flutter pub get”...警告:您正在使用这些 覆盖依赖:! font_awesome_flutter 8.8.1 来自路径 /Users/prad/Development/packages/font_awesome 正在启动 lib/main.dart 在调试模式下为 x86 构建的 Android SDK 上...注意: /Users/prad/.pub-cache/hosted/pub.dartlang.org/devicelocale-0.3.2/android/src/main/java/com/example/devicelocale/DevicelocalePlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.2.1/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseCorePlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-2.2.1/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-2.2.1/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/TransactionStreamHandler.java 使用未经检查或不安全的操作。

注意:使用 -Xlint:unchecked 重新编译以获取详细信息。笔记: /Users/prad/.pub-cache/hosted/pub.dartlang.org/firebase_analytics-8.1.0/android/src/main/java/io/flutter/plugins/firebaseanalytics/FirebaseAnalyticsPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/firebase_analytics-8.1.0/android/src/main/java/io/flutter/plugins/firebaseanalytics/FirebaseAnalyticsPlugin.java 使用未经检查或不安全的操作。

注意:使用 -Xlint:unchecked 重新编译以获取详细信息。笔记: /Users/prad/.pub-cache/hosted/pub.dartlang.org/cloud_functions-1.1.0/android/src/main/java/io/flutter/plugins/firebase/functions/FlutterFirebaseFunctionsPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/firebase_auth-1.2.0/android/src/main/java/io/flutter/plugins/firebase/auth/FlutterFirebaseAuthPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。 /Users/prad/.pub-cache/hosted/pub.dartlang.org/firebase_storage-8.1.0/android/src/main/java/io/flutter/plugins/firebase/storage/FlutterFirebaseStoragePlugin.java:38: 警告:[弃用] PluginRegistry 中的注册器已被弃用 公共静态无效 registerWith(PluginRegistry.Registrar 注册商) { ^ 1 个警告 注意:某些输入文件使用或覆盖了已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:某些输入文件使用未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译 细节。注意:某些输入文件使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。笔记: /Users/prad/.pub-cache/hosted/pub.dartlang.org/flutter_secure_storage-4.2.0/android/src/main/java/com/it_nomads/fluttersecurestorage/FlutterSecureStoragePlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/google_sign_in-5.0.4/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/image_cropper-1.4.0/android/src/main/java/vn/hunghd/flutter/plugins/imagecropper/ImageCropperPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/prad/.pub-cache/hosted/pub.dartlang.org/local_auth-1.1.6/android/src/main/java/io/flutter/plugins/localauth/LocalAuthPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:某些输入文件使用或覆盖已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 ✓ 内置 build/app/outputs/flutter-apk/app-debug.apk。失去了连接 到设备。

我使用的虚拟设备是 Pixel 3a API 版本 29。

【问题讨论】:

标签: android flutter android-studio gradle


【解决方案1】:

如果您使用的某些插件尚不支持 Flutter null 安全性,您可以在您的构建中添加--no-sound-null-safety 参数,如guide 中所述。即使使用的某些插件不支持 null 安全性,此参数也应允许您构建 Flutter 项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2020-04-19
    • 2021-04-27
    • 2021-12-20
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多