Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter: Java uses or overrides a deprecated API

Tags:

I've been trying to use the auth, firestore firebase in an Android / IOS flutter application, and have been experiencing many different issues, after testing several different versions. Now it's showing me several messages in the build log.

build log

Note: D:\Flutter\SDK\flutter.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.3+1\android\src\main\java\io\flutter\plugins\firebase\core\FirebaseCorePlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: D:\Flutter\SDK\flutter.pub-cache\hosted\pub.dartlang.org\cloud_firestore-0.13.0+1\android\src\main\java\io\flutter\plugins\firebase\cloudfirestore\CloudFirestorePlugin.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. D8: Cannot fit requested classes in a single dex file (# methods: 81454 > 65536) com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118) at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102) at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444) at com.android.build.gradle.internal.tasks.Workers$ActionFacade.run(Workers.kt:335) at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50) at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65)

    at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61)      at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)     at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61)     at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)     at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)     at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)     at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)     at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)     at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)     at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)     at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)     at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)     at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)     at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56)      at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215)     at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210)     at java.util.concurrent.FutureTask.run(FutureTask.java:266)     at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)     at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)     at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)     at java.util.concurrent.FutureTask.run(FutureTask.java:266)     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)     at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)     at java.lang.Thread.run(Thread.java:748) Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to 

complete at com.android.tools.r8.utils.t.a(:55) at com.android.tools.r8.D8.run(:11) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116) ... 34 more Caused by: com.android.tools.r8.utils.AbortException: Error: null, Cannot fit requested classes in a single dex file (# methods: 81454 > 65536) at com.android.tools.r8.utils.Reporter.a(:21) at com.android.tools.r8.utils.Reporter.a(:7) at com.android.tools.r8.dex.VirtualFile.a(:33) at com.android.tools.r8.dex.VirtualFile$h.a(:5) at com.android.tools.r8.dex.ApplicationWriter.a(:13) at com.android.tools.r8.dex.ApplicationWriter.write(:35) at com.android.tools.r8.D8.d(:44) at com.android.tools.r8.D8.b(:1) at com.android.tools.r8.utils.t.a(:23) ... 36 more

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:mergeDexDebug'.

    A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

  • 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 4m 33s

flutter doctor -v

[√] Flutter (Channel stable, v1.12.13+hotfix.5, on Microsoft Windows [Version 10.0.18362.535], locale en-IN)

  • • Flutter version 1.12.13+hotfix.5 at D:\Flutter\SDK\flutter
    • Framework revision 27321ebbad (3 weeks ago), 2019-12-10 18:15:01 -0800 • Engine revision 2994f7e1e6 • Dart version 2.7.0 

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)

  • • Android SDK at C:\Users\admin\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support) • Platform android-29, build-tools 29.0.2 • Java binary at: D:\Android SDK\jre\bin\java • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) • All Android licenses accepted. 

[√] Android Studio (version 3.5)

  • • Android Studio at D:\Android SDK
    • Flutter plugin version 41.1.2 • Dart plugin version 191.8593 • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) 

pubspec

dependencies:   flutter:     sdk: flutter   firebase_auth: ^0.15.3   cloud_firestore: ^0.13.0+1 

build.gradle(android)

dependencies {         classpath 'com.android.tools.build:gradle:3.5.0'         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"         classpath 'com.google.gms:google-services:4.3.0'     } 
like image 793
Chandru Avatar asked Dec 30 '19 10:12

Chandru


People also ask

How do you fix uses or overrides a deprecated API?

You can resolve this warning message by using recommned API. In our example, we should use setVisible(true) rather than show() method. When you will compile above code, you won't get warning message anymore. That's all about how to fix uses or overrides a deprecated api.

What is deprecated API in flutter?

The annotation deprecated is a shorthand for deprecating until an unspecified "next release" without migration instructions. A feature can be any part of an API, from a full library to a single parameter.


2 Answers

You need to use the following plugin:

dependencies:   firebase_auth: ^0.15.3   cloud_firestore: ^0.13.0+1 

Don't forget to configure firebase:

https://pub.dev/packages/cloud_firestore#setup

https://pub.dev/packages/firebase_auth#usage

Also in your app/build.gradle, increase the minSdkVersion:

Change this:

minSdkVersion 16 

into this:

minSdkVersion 23 
like image 137
Peter Haddad Avatar answered Oct 12 '22 18:10

Peter Haddad


In order to use minSdkVersion below 21 you will have to configure your app for multidex like this:

android {     defaultConfig {         ...         minSdkVersion 15          targetSdkVersion 28         multiDexEnabled true     }     ... }  dependencies {   implementation "androidx.multidex:multidex:2.0.1" } 

After this please run the

flutter pub upgrade flutter pub get flutter clean flutter run 

It will still throw the warning after flutter clean, but at least it will be possible for supporting earlier versions. More to check out on official docs

like image 45
KalaShik Avatar answered Oct 12 '22 17:10

KalaShik