Попытка вызвать метод интерфейса ‘логический com.google.common.util.concurrent.ListenableFuture.отмена(логическое значение)’ для ссылки на нулевой объект

#android #kotlin #wear-os

Вопрос:

Я пытаюсь понять, как получить данные датчиков от служб здравоохранения в ОС Wear.

Я пытаюсь запустить образцы (Образец пассивных данных) из официального руководства по эмулятору для Wear OS API 30 (он доступен в бета-версии Android Studio Arctic Fox), но я получаю эту ошибку:

 2021-07-02 16:55:54.041 7172-7200/com.example.passivedata E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
Process: com.example.passivedata, PID: 7172
java.lang.NullPointerException: Attempt to invoke interface method 'boolean com.google.common.util.concurrent.ListenableFuture.cancel(boolean)' on a null object reference
    at android.os.Parcel.createExceptionOrNull(Parcel.java:2392)
    at android.os.Parcel.createException(Parcel.java:2370)
    at android.os.Parcel.readException(Parcel.java:2353)
    at android.os.Parcel.readException(Parcel.java:2295)
    at androidx.health.services.client.impl.IPassiveMonitoringApiService$Stub$Proxy.registerDataCallback(IPassiveMonitoringApiService.java:318)
    at androidx.health.services.client.impl.ServiceBackedPassiveMonitoringClient$registerDataCallbackInternal$serviceOperation$1.execute(ServiceBackedPassiveMonitoringClient.kt:122)
    at androidx.health.services.client.impl.ipc.Client$3.execute(Client.java:222)
    at androidx.health.services.client.impl.ipc.internal.ServiceConnection.execute(ServiceConnection.java:243)
    at androidx.health.services.client.impl.ipc.internal.ServiceConnection.enqueue(ServiceConnection.java:200)
    at androidx.health.services.client.impl.ipc.internal.ConnectionManager.handleMessage(ConnectionManager.java:123)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:223)
    at android.os.HandlerThread.run(HandlerThread.java:67)
 

Кто-нибудь сталкивался с подобной проблемой?

Комментарии:

1. Можете ли вы решить эту проблему?

2. В репозитории уже есть сообщение об этой проблеме .

3. @KelvinSchoofs да, это я. Но никто не комментирует(

4. Я пробовал это со своей стороны, но у меня нет проблем при запуске «Пассивного образца данных» в API 30

Ответ №1:

измените значение enableHermes с false на true в файле android/app/build.gradle

 project.ext.react = [
    enableHermes: true
]
 

добавьте эти строки в android/app/src/main/java/com/yourProjectName/MainApplication.java

 import com.facebook.react.bridge.JSIModulePackage;
import com.swmansion.reanimated.ReanimatedJSIModulePackage;

@Override
protected JSIModulePackage getJSIModulePackage() {
    return new ReanimatedJSIModulePackage();
}
//if this is not exist then also add this
@Override
protected String getJSMainModuleName() {
    return "index";
}
 

и перестроить проект

Ответ №2:

Вам просто нужно обновить этот пакет

реагировать-родной-реанимированный

 npm i react-native-reanimated@2.2.4
 

после установки этой версии пакета просто перезагрузите симулятор.