react-native-maps: Build fails on androidx project

Is this a bug report?

Yes

Have you read the Installation Instructions?

Yes

Environment

System: OS: macOS 10.14.4 CPU: (8) x64 Intel® Core™ i7-7820HQ CPU @ 2.90GHz Memory: 1.20 GB / 16.00 GB Shell: 5.3 - /bin/zsh Binaries: Node: 11.14.0 - /usr/local/bin/node Yarn: 1.15.2 - /usr/local/bin/yarn npm: 6.9.0 - /usr/local/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman SDKs: iOS SDK: Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2 Android SDK: API Levels: 23, 25, 26, 27, 28 Build Tools: 23.0.1, 25.0.0, 25.0.2, 26.0.1, 26.0.2, 26.0.3, 27.0.3, 28.0.0, 28.0.2, 28.0.3 System Images: android-27 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom IDEs: Android Studio: 3.2 AI-181.5540.7.32.5056338 Xcode: 10.2/10E125 - /usr/bin/xcodebuild npmPackages: react: 16.6.3 => 16.6.3 react-native: 0.57.8 => 0.57.8 npmGlobalPackages: react-native-cli: 2.0.1

react-native-maps: 0.24.2

Steps to Reproduce

  1. Install react-native-maps on a non-androidx project
  2. Migrate project to androidx https://developer.android.com/jetpack/androidx/migrate
  3. Build project

Expected Behavior

Project should build

Actual Behavior

An complitation error occurs :

> Task :react-native-maps:compileDebugJavaWithJavac FAILED
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:12: error: package android.support.v4.view does not exist
import android.support.v4.view.GestureDetectorCompat;
                              ^
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:13: error: package android.support.v4.view does not exist
import android.support.v4.view.MotionEventCompat;
                              ^
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:71: error: package android.support.v4.content does not exist
import static android.support.v4.content.PermissionChecker.checkSelfPermission;
                                        ^
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:71: error: static import only from classes and interfaces
import static android.support.v4.content.PermissionChecker.checkSelfPermission;
^
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:103: error: cannot find symbol
  private final GestureDetectorCompat gestureDetector;
                ^
  symbol:   class GestureDetectorCompat
  location: class AirMapView
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:160: error: cannot find symbol
        new GestureDetectorCompat(reactContext, new GestureDetector.SimpleOnGestureListener() {
            ^
  symbol:   class GestureDetectorCompat
  location: class AirMapView
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:399: error: cannot find symbol
    return checkSelfPermission(getContext(), PERMISSIONS[0]) == PackageManager.PERMISSION_GRANTED ||
           ^
  symbol:   method checkSelfPermission(Context,String)
  location: class AirMapView
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:400: error: cannot find symbol
        checkSelfPermission(getContext(), PERMISSIONS[1]) == PackageManager.PERMISSION_GRANTED;
        ^
  symbol:   method checkSelfPermission(Context,String)
  location: class AirMapView
/Users/user/Workspace/project/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:907: error: cannot find symbol
    int action = MotionEventCompat.getActionMasked(ev);
                 ^
  symbol:   variable MotionEventCompat
  location: class AirMapView
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
9 errors

Reproducible Demo

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 2
  • Comments: 30

Most upvoted comments

If you’re using jetifier you just have to run npx jetify after installing.

hi, @mikaoelitiana change android.supprot.v* to androidx import android.support.v4.view.GestureDetectorCompat; import android.support.v4.view.GestureDetectorCompat; …… import static android.support.v4.content.PermissionChecker.checkSelfPermission;

==>

import androidx.core.view.GestureDetectorCompat; import androidx.core.view.MotionEventCompat; …… import static androidx.core.content.PermissionChecker.checkSelfPermission;

+1, we need support for androidx for this package

You can try to run this: https://github.com/mikehardy/jetifier and see how it works for you

thanks @yangkf1985 update on AirmapView.java import android.support.v4.view.GestureDetectorCompat; --> import androidx.core.view.GestureDetectorCompat; import android.support.v4.view.MotionEventCompat; --> import androidx.core.view.MotionEventCompat;

import static android.support.v4.content.PermissionChecker.checkSelfPermission; --> import static androidx.core.content.PermissionChecker.checkSelfPermission;

@rborn unfortunately, it didn’t fix my issue.

Nah, it did not work for me.

react native version 0.59.0 android/gradle.properties

android.useAndroidX=true android.enableJetifier=true

I solved this issue

I had error when use react-native-maps package on RN 0.59.9.

> Task :react-native-maps:compileDebugJavaWithJavac FAILED
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:12: error: package android.support.v4.view does not exist
import android.support.v4.view.GestureDetectorCompat;
                              ^
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:13: error: package android.support.v4.view does not exist
import android.support.v4.view.MotionEventCompat;
                              ^
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:71: error: package android.support.v4.content does not exist
import static android.support.v4.content.PermissionChecker.checkSelfPermission;
                                        ^
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:71: error: static import only from classes and interfaces
import static android.support.v4.content.PermissionChecker.checkSelfPermission;
^
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:103: error: cannot find symbol
  private final GestureDetectorCompat gestureDetector;
                ^
  symbol:   class GestureDetectorCompat
  location: class AirMapView
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:160: error: cannot find symbol
        new GestureDetectorCompat(reactContext, new GestureDetector.SimpleOnGestureListener() {
            ^
  symbol:   class GestureDetectorCompat
  location: class AirMapView
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:399: error: cannot find symbol
    return checkSelfPermission(getContext(), PERMISSIONS[0]) == PackageManager.PERMISSION_GRANTED ||
           ^
  symbol:   method checkSelfPermission(Context,String)
  location: class AirMapView
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:400: error: cannot find symbol
        checkSelfPermission(getContext(), PERMISSIONS[1]) == PackageManager.PERMISSION_GRANTED;
        ^
  symbol:   method checkSelfPermission(Context,String)
  location: class AirMapView
/Volumes/Work/ben/develop/Nono-1.0/node_modules/react-native-maps/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java:911: error: cannot find symbol
    int action = MotionEventCompat.getActionMasked(ev);
                 ^
  symbol:   variable MotionEventCompat
  location: class AirMapView
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
9 errors

How can I solve this issue?

You can try to run this: https://github.com/mikehardy/jetifier and see how it works for you

This worked for me, but only after I went into the node modules/react-native-map/lib/android/build.gradle and changed

dependencies {
  compileOnly('com.facebook.react:react-native:+') {
   exclude group: 'com.android.support'
  }
  ...
}

to

dependencies {
  implementation('com.facebook.react:react-native:+') {
  exclude group: 'com.android.support'
  }
  ...
}

This seems like a fix that should be included in the next PR ASAP

I am having the same issue

EDIT I got it working by using jetifier

Will there be a new version of this package that supports androidx?