У меня есть рабочий проект с GoogleMaps, который отлично работает. Я сделал копию этого проекта, чтобы сделать проект модульным, и теперь я получаю ошибку EXC_BAD_ACCESS при попытке открыть карту.
вот моя конфигурация модуля:
def shared_pods
...
pod 'GoogleMaps', :modular_headers => true
pod 'GooglePlaces', :modular_headers => true
end
def application_pods
...
end
def core_application_pods
...
end
target 'Application' do
project 'Application/Application.xcodeproj'
# Pods for Application
shared_pods
application_pods
target 'ApplicationTests' do
inherit! :search_paths
# Pods for testing
end
target 'ApplicationUITests' do
# Pods for testing
end
end
target 'Core' do
project 'Core/Core.xcodeproj'
# Pods for Core
shared_pods
core_application_pods
target 'CoreTests' do
inherit! :search_paths
# Pods for testing
end
end
# Static libraries
static_libraries = ['GoogleMaps', 'GoogleMapsBase', 'GoogleMapsCore']#, 'GooglePlaces']
post_install do |installer|
puts "Running post_install script"
puts "Fix static_libraries"
installer.aggregate_targets.each do |aggregate_target|
unless ['Pods-Application'].include? aggregate_target.name
aggregate_target.xcconfigs.each do |config_name, config_file|
config_file.frameworks.subtract(static_libraries)
xcconfig_path = aggregate_target.xcconfig_path(config_name)
config_file.save_as(xcconfig_path)
end
end
end
...
end
Я даже попытался поместить оба модуля в shared_pods, включить / отключить modular_headers, и в результате нет разницы.
Вот часть кода, который создает объект UIGMapsView. Объект успешно создан, и делегаты Карт запускаются до того, как cra sh ..
final fileprivate func setupMapViewConstraints() {
if self.mapView == nil {
let mapView = UIGMapsView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
mapView.gmapDelegate = self
mapView.translatesAutoresizingMaskIntoConstraints = false
mapView.settings.myLocationButton = false
self.mapView = mapView
}
if let mapView = self.mapView {
self.view.addSubview(mapView)
self.view.sendSubviewToBack(mapView)
let views : [String: UIView] = ["mapView": mapView]
let vertical = NSLayoutConstraint.constraints(withVisualFormat: "V:|[mapView]|", options: [], metrics: nil, views: views)
let horizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:|[mapView]|", options: [], metrics: nil, views: views)
NSLayoutConstraint.activate(vertical + horizontal)
autoreleasepool {
mapView.startMonitoringLocation()
mapView.backToMyPosition()
}
}
}
Экран откроется, и примерно через 1 секунду на этом экране появится cra sh. (Я даже могу видеть синюю точку в середине карты, но карта вся серая ...)
Я даже пытался включить Zomb ie, чтобы попытаться выяснить, что вызывает это, но не так много там тоже помощь ... вот скриншот:
Кто-нибудь знает, что может быть причиной этого крэ sh?
Заранее спасибо!
РЕДАКТИРОВАНИЕ:
Я попробовал решение, упомянутое ниже, и ошибки Связи возникли во время сборки.
Неопределенные символы для архитектуры arm64:
"_OBJC_CLASS _ $ _ GMSServices", на который ссылаются из: obj c -class-ref в AppDelegate.o "_OBJC_CLASS _ $ _ GMSMapView", на который ссылаются из: типа метаданных для Natura.UIGMapsView в UIGMapsView.o "_OBLMASS _ $ _ _ _ _ _ _ _ _ _ _ _ _ _" : _OBJC_METACLASS _ $ __ TtC6Natura11UIGMapsView в UIGMapsView.o "_OBJC_CLASS _ $ _ GMSMutablePath", на который ссылаются из: obj c -класс-ref в UIGMapsView.o "_OBJC_CLASS _ $ _ Классифицируется * из-за ссылки на 10-й класс, в UGMCView. «_OBJC_ CLASS _ $ _ GMSCameraUpdate ", на который ссылается: obj c -class-ref в UIGMapsView.o obj c -class-ref в SearchConsultantOnMapViewController.o" _OBJC_CLASS _ $ _ GMSMarker ", на который ссылается: obj c UIGMapsView.o ld: символ (ы) не найден для архитектуры arm64 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)
У меня была дополнительная строка в сообщении Сценарий, который был:
unless ['Pods-Application'].include? aggregate_target.name
Таким образом, предлагаемое решение не было установлено основной проект, только для ядра. Но когда я убираю эту строку, появляется ошибка выше о неопределенных символах