iampawan / Flute-Music-Player

Flute Music Player - First Open Source Flutter based material design music player with audio plugin to play local music files.
Apache License 2.0
332 stars 119 forks source link

AndroidX not supported #20

Closed sandunsameera closed 4 years ago

SilenceCodder commented 4 years ago

The Author of this plugin should please try to migrate it to Androidx, Have finished building a Music App, After I migrate to Androidx and run the Project, It gives me this Error

C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:8: error: cannot find symbol
import android.support.v4.app.ActivityCompat;
                             ^
  symbol:   class ActivityCompat
  location: package android.support.v4.app
C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:9: error: package android.support.v4.content does not exist
import android.support.v4.content.ContextCompat;
                                 ^
C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:10: error: package android.support.v7.app does not exist
import android.support.v7.app.AppCompatActivity;
                             ^
C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:15: error: cannot find symbol
    public static boolean hasExternalStorageAccess(AppCompatActivity activity) {
                                                   ^
  symbol:   class AppCompatActivity
  location: class MusicHelper
C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:16: error: cannot find symbol
        if(ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE)
           ^
  symbol:   variable ContextCompat
  location: class MusicHelper
C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:19: error: cannot find symbol
        ActivityCompat.requestPermissions(activity,
        ^
  symbol:   variable ActivityCompat
  location: class MusicHelper
Note: C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicFinderPlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicFinderPlugin.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':flute_music_player: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 4m 19s
The built failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetfier to solve the incompatibility.
✏️  Creating `android\settings_aar.gradle`...
[!] Flutter tried to create the file `android\settings_aar.gradle`, but failed.
To manually update `settings.gradle`, follow these steps:

    1. Copy `settings.gradle` as `settings_aar.gradle`
    2. Remove the following code from `settings_aar.gradle`:

            def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

            def plugins = new Properties()
            def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
            if (pluginsFile.exists()) {
                pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
            }

            plugins.each { name, path ->
                def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
                include ":$name"
                project(":$name").projectDir = pluginDirectory
            }

Finished with error: Please create the file and run this command again.
rlgjsdev commented 4 years ago

I'm having the same issue, but according to flutter.dev/docs/development/androidx-migration , Jetifier automatically migrate plugins to AndroidX. That means that if you enabled Jetifier, the plugin must work normally.

SilenceCodder commented 4 years ago

I'm having the same issue, but according to flutter.dev/docs/development/androidx-migration , Jetifier automatically migrate plugins to AndroidX. That means that if you enabled Jetifier, the plugin must work normally.

But It's doesn't' work for me or does it work for you?

rlgjsdev commented 4 years ago

I solved the problem by editing the YOUR_FLUTTER_SDK_LOCATION\ .pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java . I changed 10th line to this: import androidx.appcompat.app.AppCompatActivity;

sandunsameera commented 4 years ago

Yup this finally solved the issue

mostafawahied commented 4 years ago

still have the same error

Launching lib\main.dart on ONEPLUS A6003 in debug mode... Running Gradle task 'assembleDebug'... D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:8: error: cannot find symbol import android.support.v4.app.ActivityCompat; ^ symbol: class ActivityCompat location: package android.support.v4.app D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:9: error: package android.support.v4.content does not exist import android.support.v4.content.ContextCompat; ^ D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:17: error: cannot find symbol if(ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) ^ symbol: variable ContextCompat location: class MusicHelper D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:20: error: cannot find symbol ActivityCompat.requestPermissions(activity, ^ symbol: variable ActivityCompat location: class MusicHelper Note: D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicFinderPlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicFinderPlugin.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 4 errors

FAILURE: Build failed with an exception.

BUILD FAILED in 31s The built failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetfier to solve the incompatibility. Building plugin flute_music_player... Running Gradle task 'assembleAarRelease'... :assembleAarRelease UP-TO-DATE :preBuild UP-TO-DATE :preReleaseBuild UP-TO-DATE :compileReleaseAidl UP-TO-DATE :compileReleaseNdk NO-SOURCE :compileReleaseRenderscript UP-TO-DATE :checkReleaseManifest UP-TO-DATE :generateReleaseBuildConfig UP-TO-DATE :prepareLintJar UP-TO-DATE :generateReleaseResValues UP-TO-DATE :generateReleaseResources UP-TO-DATE :packageReleaseResources UP-TO-DATE :platformAttrExtractor UP-TO-DATE :processReleaseManifest UP-TO-DATE :processReleaseResources UP-TO-DATE :generateReleaseSources UP-TO-DATE :javaPreCompileRelease UP-TO-DATE :compileReleaseJavaWithJavac FAILED :mergeReleaseShaders UP-TO-DATE :compileReleaseShaders UP-TO-DATE :generateReleaseAssets UP-TO-DATE :mergeReleaseAssets UP-TO-DATE :mergeReleaseConsumerProguardFiles UP-TO-DATE :packageReleaseRenderscript NO-SOURCE :processReleaseJavaRes NO-SOURCE :mergeReleaseJniLibFolders UP-TO-DATE :transformNativeLibsWithMergeJniLibsForRelease UP-TO-DATE :transformNativeLibsWithSyncJniLibsForRelease UP-TO-DATE D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:10: error: package androidx.appcompat.app does not exist import androidx.appcompat.app.AppCompatActivity; ^ 19 actionable tasks: 1 executed, 18 up-to-date D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:16: error: cannot find symbol

public static boolean hasExternalStorageAccess(AppCompatActivity activity) {
                                               ^

symbol: class AppCompatActivity location: class MusicHelper Note: D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicFinderPlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: D:\flutter\program.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicFinderPlugin.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 2 errors

FAILURE: Build failed with an exception.

BUILD FAILED in 4s

Finished with error: The plugin flute_music_player could not be built due to the issue above.

rlgjsdev commented 4 years ago

Try changing line 6 ~ 10 to this:

import android.Manifest;
import android.content.pm.PackageManager;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AppCompatActivity;

After AndroidX, android support packages became one. So the codes that import android support packages must be changed.

mostafawahied commented 4 years ago

it works thank you

kamleshwebtech commented 3 years ago

I have changed line number 10 as suggested above, then clean the flutter by 'flutter clean' command then recompiled application but still facing same issue:

event sent after app closed: {id: 0, progressId: null, message: Running "flutter pub get" in flute_example...}
event sent after app closed: {id: 0, progressId: null, finished: true}
Launching lib\main.dart on Redmi Note 4 in debug mode...
lib\main.dart:1
D:\jay\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:8: error: cannot find symbol
import android.support.v4.app.ActivityCompat;
                             ^
  symbol:   class ActivityCompat
  location: package android.support.v4.app
D:\jay\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:9: error: package android.support.v4.content does not exist
import android.support.v4.content.ContextCompat;
                                 ^
D:\jay\flutter\.pub-cache\hosted\pub.dartlang.org\flute_music_player-0.0.6\android\src\main\java\com\mtechviral\musicfinder\MusicHelper.java:17: error: cannot find symbol

is there any perfect solution or should i go with another flutter plug-in which will be best option, i think so.