Нет метода интерфейса putArray в классе WritableMap React-Native - PullRequest
1 голос
/ 05 мая 2020

Я использую версию RN: "0.61.5"

Проблема в том, что я установил response-native-beacons-manager 1.0.7 (обратите внимание, что версия npm последний раз обновлялся долгое время go, но я пробовал и последнюю версию Github), но я не могу ее использовать, так как при попытке запустить приложение происходит сбой приложения. Более того, он не показывает красный экран с трассировкой стека ошибок. Я просмотрел логи и обнаружил, что проблема связана с WrittableArray, вот логи

2020-05-05 06:20:49.500 5218-5306/com.freeline E/AndroidRuntime: FATAL EXCEPTION: IntentService[BeaconIntentProcessor]
    Process: com.freeline, PID: 5218
    java.lang.NoSuchMethodError: No interface method putArray(Ljava/lang/String;Lcom/facebook/react/bridge/WritableArray;)V in class Lcom/facebook/react/bridge/WritableMap; or its super classes (declaration of 'com.facebook.react.bridge.WritableMap' appears in /data/app/com.freeline-BgN5GbjFCm9weblBl35oBw==/base.apk)
        at com.mackentoch.beaconsandroid.BeaconsAndroidModule.createRangingResponse(BeaconsAndroidModule.java:299)
        at com.mackentoch.beaconsandroid.BeaconsAndroidModule.access$300(BeaconsAndroidModule.java:37)
        at com.mackentoch.beaconsandroid.BeaconsAndroidModule$2.didRangeBeaconsInRegion(BeaconsAndroidModule.java:280)
        at org.altbeacon.beacon.BeaconIntentProcessor.onHandleIntent(BeaconIntentProcessor.java:68)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:76)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.os.HandlerThread.run(HandlerThread.java:65)

Я нашел функцию, которая вызвала сбои, вот она:

    private WritableMap createRangingResponse(Collection<Beacon> beacons, Region region) {
        WritableMap map = new WritableNativeMap();
        map.putString("identifier", region.getUniqueId());
        map.putString("uuid", region.getId1() != null ? region.getId1().toString() : "");
        WritableArray a = new WritableNativeArray();
        for (Beacon beacon : beacons) {
            WritableMap b = new WritableNativeMap();
            b.putString("uuid", beacon.getId1().toString());
            b.putInt("major", beacon.getId2().toInt());
            b.putInt("minor", beacon.getId3().toInt());
            b.putInt("rssi", beacon.getRssi());
            b.putDouble("distance", beacon.getDistance());
            b.putString("proximity", getProximity(beacon.getDistance()));
            a.pushMap(b);
        }
        map.putArray("beacons", a); // <- The line that produces the exception
        return map;
    }

Затем я прочтите кучу сообщений и поймите, что проблема в реализации WritableMap в новых версиях RN.

Итак, мой вопрос: есть ли какой-либо способ решить эту проблему, я уже рассмотрел проблему здесь . Мне известно о возможности понижения версии RN до ^ 60, но я бы оставил это как последний возможный метод.

Благодарю за вашу помощь

1 Ответ

1 голос
/ 06 мая 2020

Решил проблему, просто перейдя на версию RN 60.6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...