MohGovIL / hamagen-react-native

Israel's Ministry of Health's COVID-19 Exposure Prevention App
https://health.gov.il/
MIT License
509 stars 153 forks source link

Remove `npx jetify` call dependecy in building apk & package.json file #242

Open emanuelb opened 4 years ago

emanuelb commented 4 years ago

In current version & older versions, running npx jetify is required in order to compile the apk https://github.com/MohGovIL/hamagen-react-native/blob/a5e1d4db92fa2d197727f26f1f4ec37f40d3d0ea/package.json#L5-L6

this call is needed only when bad/old code is used in code/dependencies which is not migrated to androidx yet (also relevant only for apk build, not for ipa build)

Currently compiled code from 2.2.6 version, return

> Task :react-native-bluetooth-state-manager:compileReleaseJavaWithJavac FAILED
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/BluetoothUtils.java:7: error: package android.support.v4.content does not exist
import android.support.v4.content.ContextCompat;
                                 ^
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/Constants.java:3: error: package android.support.annotation does not exist
import android.support.annotation.StringDef;
                                 ^
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/Constants.java:10: error: cannot find symbol
  @StringDef({
   ^
  symbol:   class StringDef
  location: class Constants
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/RNBluetoothStateManagerModule.java:13: error: package android.support.annotation does not exist
import android.support.annotation.Nullable;
                                 ^
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/RNBluetoothStateManagerModule.java:14: error: package android.support.v4.content does not exist
import android.support.v4.content.ContextCompat;
                                 ^
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/RNBluetoothStateManagerModule.java:225: error: cannot find symbol
  private void sendEvent(String eventName, @Nullable Object params) {
                                            ^
  symbol:   class Nullable
  location: class RNBluetoothStateManagerModule
/node_modules/react-native-bluetooth-state-manager/android/src/main/java/de/patwoz/rn/bluetoothstatemanager/BluetoothUtils.java:16: error: cannot find symbol
    return ContextCompat.checkSelfPermission(activity, Manifest.permission.BLUETOOTH_ADMIN) == PackageManager.PERMISSION_GRANTED;
           ^
  symbol:   variable ContextCompat
  location: class BluetoothUtils

7 errors

which is already probably fixed upstream by https://github.com/patlux/react-native-bluetooth-state-manager/pull/17/files

There might be more issues like this, the solution is to always try to build apk without npx jetify call, if fail, fix it (your code) or report it upstream (not your dep code) and always use updated deps (which probably already have fixed version) see issue #197

emanuelb commented 4 years ago

Another offender is "react-native-firebase": "5.6.0" there is open issue #175 for migrating to v6 package thats support androidx, see comment: https://github.com/MohGovIL/hamagen-react-native/issues/175#issuecomment-617712544

Errors from react-native-firebase when compiling without npx jetify

> Task :react-native-firebase:compileReleaseJavaWithJavac FAILED
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/storage/RNFirebaseStoragePackage.java:3: error: package android.support.annotation does not exist
import android.support.annotation.RequiresPermission;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessagingService.java:5: error: package android.support.v4.content does not exist
import android.support.v4.content.LocalBroadcastManager;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessaging.java:7: error: cannot find symbol
import android.support.v4.app.NotificationManagerCompat;
                             ^
  symbol:   class NotificationManagerCompat
  location: package android.support.v4.app
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessaging.java:8: error: package android.support.v4.content does not exist
import android.support.v4.content.LocalBroadcastManager;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseBackgroundNotificationActionReceiver.java:8: error: cannot find symbol
import android.support.v4.app.RemoteInput;
                             ^
  symbol:   class RemoteInput
  location: package android.support.v4.app
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:15: error: cannot find symbol
import android.support.v4.app.NotificationCompat;
                             ^
  symbol:   class NotificationCompat
  location: package android.support.v4.app
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:16: error: cannot find symbol
import android.support.v4.app.RemoteInput;
                             ^
  symbol:   class RemoteInput
  location: package android.support.v4.app
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:412: error: package NotificationCompat does not exist
  private NotificationCompat.Action createAction(
                            ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:499: error: cannot find symbol
  private RemoteInput createRemoteInput(Bundle remoteInput) {
          ^
  symbol:   class RemoteInput
  location: class DisplayNotificationTask
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:20: error: package android.support.annotation does not exist
import android.support.annotation.RequiresApi;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:21: error: package android.support.v4.content does not exist
import android.support.v4.content.LocalBroadcastManager;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotifications.java:10: error: cannot find symbol
import android.support.v4.app.RemoteInput;
                             ^
  symbol:   class RemoteInput
  location: package android.support.v4.app
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotifications.java:11: error: package android.support.v4.content does not exist
import android.support.v4.content.LocalBroadcastManager;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/analytics/RNFirebaseAnalyticsPackage.java:3: error: package android.support.annotation does not exist
import android.support.annotation.RequiresPermission;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/ReactNativeFirebaseAppRegistrar.java:20: error: package android.support.annotation does not exist
import android.support.annotation.Keep;
                                 ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/ReactNativeFirebaseAppRegistrar.java:29: error: cannot find symbol
@Keep
 ^
  symbol: class Keep
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/storage/RNFirebaseStoragePackage.java:17: error: cannot find symbol
  @RequiresPermission(
   ^
  symbol:   class RequiresPermission
  location: class RNFirebaseStoragePackage
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:370: error: cannot find symbol
  @RequiresApi(api = 26)
   ^
  symbol:   class RequiresApi
  location: class RNFirebaseNotificationManager
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:384: error: cannot find symbol
  @RequiresApi(api = 26)
   ^
  symbol:   class RequiresApi
  location: class RNFirebaseNotificationManager
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:398: error: cannot find symbol
  @RequiresApi(api = 26)
   ^
  symbol:   class RequiresApi
  location: class RNFirebaseNotificationManager
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:414: error: cannot find symbol
  @RequiresApi(api = 26)
   ^
  symbol:   class RequiresApi
  location: class RNFirebaseNotificationManager
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:457: error: cannot find symbol
  @RequiresApi(api = 26)
   ^
  symbol:   class RequiresApi
  location: class RNFirebaseNotificationManager
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/analytics/RNFirebaseAnalyticsPackage.java:17: error: cannot find symbol
  @RequiresPermission(
   ^
  symbol:   class RequiresPermission
  location: class RNFirebaseAnalyticsPackage
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessagingService.java:26: error: cannot find symbol
    LocalBroadcastManager
    ^
  symbol:   variable LocalBroadcastManager
  location: class RNFirebaseMessagingService
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessagingService.java:41: error: cannot find symbol
      LocalBroadcastManager
      ^
  symbol:   variable LocalBroadcastManager
  location: class RNFirebaseMessagingService
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessagingService.java:51: error: cannot find symbol
        LocalBroadcastManager
        ^
  symbol:   variable LocalBroadcastManager
  location: class RNFirebaseMessagingService
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessaging.java:36: error: cannot find symbol
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
    ^
  symbol:   class LocalBroadcastManager
  location: class RNFirebaseMessaging
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessaging.java:36: error: cannot find symbol
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
                                                  ^
  symbol:   variable LocalBroadcastManager
  location: class RNFirebaseMessaging
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/messaging/RNFirebaseMessaging.java:90: error: cannot find symbol
    Boolean enabled = NotificationManagerCompat
                      ^
  symbol:   variable NotificationManagerCompat
  location: class RNFirebaseMessaging
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseBackgroundNotificationActionReceiver.java:62: error: cannot find symbol
      Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
                           ^
  symbol:   variable RemoteInput
  location: class RNFirebaseBackgroundNotificationActionReceiver
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:81: error: package NotificationCompat does not exist
      NotificationCompat.Builder nb;
                        ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:84: error: package NotificationCompat does not exist
        nb = new NotificationCompat.Builder(context, channelId);
                                   ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:87: error: package NotificationCompat does not exist
        nb = new NotificationCompat.Builder(context);
                                   ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:130: error: package NotificationCompat does not exist
        NotificationCompat.BigPictureStyle bp = new NotificationCompat.BigPictureStyle();
                          ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:130: error: package NotificationCompat does not exist
        NotificationCompat.BigPictureStyle bp = new NotificationCompat.BigPictureStyle();
                                                                      ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:163: error: package NotificationCompat does not exist
        NotificationCompat.BigTextStyle bt = new NotificationCompat.BigTextStyle();
                          ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:163: error: package NotificationCompat does not exist
        NotificationCompat.BigTextStyle bt = new NotificationCompat.BigTextStyle();
                                                                   ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:366: error: package NotificationCompat does not exist
          NotificationCompat.Action action = createAction(context, a, intentClass, notification);
                            ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:429: error: package NotificationCompat.Action does not exist
    NotificationCompat.Action.Builder ab = new NotificationCompat.Action.Builder(
                             ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:429: error: package NotificationCompat.Action does not exist
    NotificationCompat.Action.Builder ab = new NotificationCompat.Action.Builder(
                                                                        ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:442: error: cannot find symbol
        RemoteInput remoteInput = createRemoteInput(ri);
        ^
  symbol:   class RemoteInput
  location: class DisplayNotificationTask
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:501: error: package RemoteInput does not exist
    RemoteInput.Builder rb = new RemoteInput.Builder(resultKey);
               ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java:501: error: package RemoteInput does not exist
    RemoteInput.Builder rb = new RemoteInput.Builder(resultKey);
                                            ^
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java:204: error: cannot find symbol
      LocalBroadcastManager
      ^
  symbol:   variable LocalBroadcastManager
  location: class RNFirebaseNotificationManager
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotifications.java:54: error: cannot find symbol
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
    ^
  symbol:   class LocalBroadcastManager
  location: class RNFirebaseNotifications
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotifications.java:54: error: cannot find symbol
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
                                                  ^
  symbol:   variable LocalBroadcastManager
  location: class RNFirebaseNotifications
/app/hamagen-react-native-master/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotifications.java:308: error: cannot find symbol
    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
                         ^
  symbol:   variable RemoteInput
  location: class RNFirebaseNotifications