mapkit-ios-demo
mapkit-ios-demo copied to clipboard
Carthage Ошибка. Устанавливаем через Carthage.
YandexMapKit (3.5.0)
Cartfile:
github "yandex/mapkit-ios-demo"
Terminal:
iMac-Argus:Motiv-iOS-Sources argus$ carthage update --platform iOS *** Cloning mapkit-ios-demo *** Checking out mapkit-ios-demo at "v3.4" *** xcodebuild output can be found in /var/folders/nb/9g4bcynn1bbbl93rrd7nns4h0000gn/T/carthage-xcodebuild.iZEl6B.log *** Skipped building mapkit-ios-demo due to the error: Dependency "mapkit-ios-demo" has no shared framework schemes for any of the platforms: iOS
If you believe this to be an error, please file an issue with the maintainers at https://github.com/yandex/mapkit-ios-demo/issues/new iMac-Argus:Motiv-iOS-Sources argus$
Ошибка при установке через Carthage.
Жаль, что как-то нет никакого опыта по этой проблеме ни у кого и никаких рекомендаций. На Stackoverflow даже такого топика не существует.
В общем, самостоятельно повоевал с этой проблемой, получилось установить Yandex MapKit без CocoaPods, через Carthage. Не все гладко, но у меня получилось на Xcode 11.2.1 и также на Xcode 11.5, Swift 5.X.
Итак:
1. Добавляем в Cartfile записи:
binary "https://raw.githubusercontent.com/ARGAMX/Carthage-Specs/master/iOS/YandexMapKit.json"
binary "https://raw.githubusercontent.com/ARGAMX/Carthage-Specs/master/iOS/YandexRuntime.json"
Пояснения по этим json в самом конце инструкции.
2. Запускаете обновление Сarthage зависимостей в проекте. (carthage update --platform iOS)
3. Добавляем фреймворки в проект: перетаскиваем из папки Carthage файлы: YandexMapKit.framework, YandexRuntime.framework.
4. В свойствах проекта, General -> Framewporks фреймворки, по-умолчанию, добавляются как Do Not Embed. Не трогаем, оставляем Do Not Embed.
5. Прописываем в AppDelegate
import YandexMapKit
и
YMKMapKit.setApiKey("your_Yandex_MapKit_key")
6. Пробуем собрать/запустить.
7. Если не работает, получаем ошибки/краш, то в Target -> Build Settings -> Other Linker Flags добавляем -lc++. Пробуем запустить. 8. Если не работает, получаем ошибки/краш, то в Other Linker Flags добавляем -all_load. Пробуем запустить. 9. Если не работает, получаем ошибки/краш, то в AppDelegate дописываем import CoreLocation, import CoreTelephony, import SystemConfiguration после import YandexMapKit. Пробуем запустить. 10. Если не работает, получаем ошибки/краш, то в Other Linker Flags добавляем $(inherited). Пробуем запустить. 11. Если не работает, получаем ошибки/краш, то добавляем запись STRIP_BITCODE_FROM_COPIED_FILES=NO в Build Settings (https://stackoverflow.com/questions/32071209/xcode-7-bitcode-strip-error). Пробуем запустить. 12. Если не работает, получаем ошибки/краш, делаем Clean Build Folder и удаляем Derived Data. Пробуем запустить. 13. Если не работает, получаем ошибки/краш, гуглим ошибки. На этом этапе у меня заработало и больше я ничего не предпринимал. Поэтому решил написать инструкцию для вас, которую вы сейчас читаете. 14. Если ничего так и не выходит и руки уже опускаются, качаем демо-проект и пробуем собрать его: https://github.com/ARGAMX/YandexMapKit-iOS-Carthage-Demo
Эту инструкцию не стесняйтесь копировать, дополнять и распространять.
=========================================================================
По поводу содержимого Cartfile:
binary "https://raw.githubusercontent.com/ARGAMX/Carthage-Specs/master/iOS/YandexMapKit.json"
binary "https://raw.githubusercontent.com/ARGAMX/Carthage-Specs/master/iOS/YandexRuntime.json"
Эти json файлы - YandexMapKit.json и YandexRuntime.jsoт - созданы мной и теперь, по сути, мне их курировать. В них нужно своевременно добавлять новые версии MapKit, когда они будут выходить.
Вполне возможно, что в будущем я буду забывать это делать. Не стесняйтесь форкнуться (https://github.com/ARGAMX/Carthage-Specs) и обновлять их самостоятельно в своем репозитории. На момент создания они поддерживают только версию MapKit 3.4.0 и 3.5.0.
Пути до файлов framework.zip, которые прописаны в этих json, я брал из файла Podspec (из Cocoapods). Отсюда: https://github.com/CocoaPods/Specs/tree/master/Specs/5/7/2/YandexRuntime https://github.com/CocoaPods/Specs/tree/master/Specs/2/3/4/YandexMapKit Например: https://github.com/CocoaPods/Specs/blob/master/Specs/5/7/2/YandexRuntime/3.4/YandexRuntime.podspec.json или https://github.com/CocoaPods/Specs/blob/master/Specs/5/7/2/YandexRuntime/3.5.0/YandexRuntime.podspec.json
@ARGAMX добрый день. А с ресурсами этих либ ничего не делали, т.е. не добавляли их в Copy Bundle Resources? Прохожу по вашим шагам, но всегда получаю ошибки компиляции.
@ARGAMX добрый день. А с ресурсами этих либ ничего не делали, т.е. не добавляли их в Copy Bundle Resources? Прохожу по вашим шагам, но всегда получаю ошибки компиляции.
Добрый день. Нет, ничего не делал. Попробуйте демо проект.
После долгих ресерчей получилось залинковать библиотеку Однако, запросы не отрабатывали в модулях... Все оказалось просто – эта строка не опциональна, а обязательна (Как минимум для suggest):
/** ** You can optionaly customize locale. ** Otherwise MapKit will use default location. */ YMKMapKit.setLocale("en_US")
Надеюсь, кому-то это будет полезно
Странно, что нет адекватной документации к iOS SDK