Библиотеки Dynami c, не связанные после обновления до React Native 0.60+ - PullRequest
1 голос
/ 05 марта 2020

После обновления до React Native 0.61.5 У меня проблемы с подключением библиотек, которые могут быть связаны только динамически (@react-native-mapbox-gl/maps).

Обычно решение состоит в том, чтобы включить динамические библиотеки c в Podfile. (настройка use_frameworks!). Однако в результате это делает все библиотеки динамическими c и вызывает проблемы с библиотеками, которые могут быть связаны только статически (react-native-firebase).

Есть ли какое-либо решение, которое удовлетворяло бы этим противоречивым требованиям?

Когда установлен use_frameworks!, эта ошибка генерируется во время выполнения:

dyld: Library not loaded: @rpath/MapboxMobileEvents.framework/MapboxMobileEvents
  Referenced from: /private/var/containers/Bundle/Application/4A4F5BC3-2A1D-4949-9423-71EF7EFE79FD/ImmoWert2Go.app/Frameworks/Mapbox.framework/Mapbox
  Reason: image not found

Когда use_frameworks! не установлен, pod install выдает эту ошибку:

[!] The 'Pods-ImmoWert2Go' target has transitive dependencies that include statically linked binaries: (FirebaseCore, FirebaseCoreDiagnostics, GoogleDataTransportCCTSupport, GoogleDataTransport, and FirebaseInstanceID)

1 Ответ

0 голосов
/ 05 марта 2020

@react-native-mapbox-gl/maps в настоящее время недоступен в качестве библиотеки c, поэтому весь проект должен быть настроен на использование динамических c библиотек, что не рекомендуется Apple.

Решение было добавьте эти строки в начале подфайла:

# Set libraries as dynamic by default
use_frameworks!

# Set specific libraries as static (react-native-firebase)
pre_install do |installer|
  installer.pod_targets.each do |pod|
    if pod.name.start_with?('RNFB')
      def pod.build_type;
        Pod::Target::BuildType.static_library
      end
    end
  end
end

После того, как это будет сделано, RNFirebaseUtil.h необходимо пропатчить от

#import <Firebase.h>

до

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