Closed mezhevikin closed 7 years ago
Спасибо за подробное описание проблемы. Подскажите, какая у Вас версия Xcode? Со своей стороны (Xcode 8): Ваш проект склонировал, установил поды, выбрал подходящую Signing Team, собрал проект для iOS 8.4 - всё запустилось без проблем. Собранный в ipa-файл архив также установился через iTunes без проблем. Смею предположить, что Вам стоит обратить внимание на аттрибуты подписи Вашего приложения. Ошибка, описанная выше, говорит о том, что bundle ID у provisioning profile и signing certificate, использованные для подписи, не соответствуют bundle ID в Info.plist приложения.
@bamx23 xcode 8.0. C остальными проектами использующими cocpods нет проблем. Я не генерировал отдельные provision профайлы для этого тестового проекта, стоит галочка автоматическая подпись и выбран мой девелоперский аккаунт. Вот сделал видео для демонстрации проблемы и показываю какие у меня настройки - https://www.dropbox.com/s/huw3qq4tqd68kwj/demo.mov?dl=0
Сейчас попробовал вот такие - (скрин - http://rgho.st/7Jj9C2yQj/image.png) build settings поставить, не помогло
@bamx23 Еще доп информация:
А можно увидеть полный лог сборки? Может быть не происходит подписи динамического фреймворка. И ещё, какая у Вас версия macOS?
@bamx23 можно, только подскажите где его взять?
mac 0s - 10.11.6 (15G1004) xcode - 8.0 (8A218a) cocapods - 1.1.1 на обоих устройствам ios 9.3.5
По логу похоже, что всё тоже в порядке. Можете приложение /Users/mezhevikin/Library/Developer/Xcode/DerivedData/AppmetrikaBug-farcconlnqmjpyelhqievliipikl/Build/Products/Debug-iphoneos/AppmetrikaBug.app
передать архивом?
На первый взгляд всё также хорошо. Сейчас нет возможности проверить на устройстве, но я узнаю, что именно не так с собранным приложением.
@bamx23 спасибо. буду ждать ответа
@bamx23 Привет. Я создал новый проект и провел небольшой экспиремент где коммитил каждый шаг - https://github.com/mezhevikin/AppmetrikaBug2/commits/master .
1. Создал пустой проект. Он запускается на реальном устройстве
2. Добавил podfile с одной зависимость alamofire, сделал pod install. Приложение все еще запускается на устройстве
3. Попробовал добавить статическую библиотеку pod 'YandexMobileMetrica'. Приложение запускается на устройстве
4. Теперь заменил на pod 'YandexMobileMetrica/Dynamic' . Приложение больше не запускается на устройстве и выдает ошибку.
5. Вернул обратно статическую библиотеку pod 'YandexMobileMetrica', но проект больше не запускается на устройстве и выдает ту же ошибку. То есть когда происходит pod install в прошлом коммите это ломает проект и после этого он уже не запускается на реальном устройстве даже после удалении библиотеки.
@bamx23 Извини в последнем пункте ложную инфу дал. после Product -> clean статическая библиотека таки запустилась.
Ваша сборка на моё устройство не установится, т.к. provisioning profile не содержит его id. Можете попробовать собрать чистый проект, куда динамический фреймворк AppMetrica будет подключен напрямую, минуя CocoaPods, дабы исключить влияние последнего на процесс сборки. Ссылка для скачивания: YandexMobileMetrica-2.6.2-ios-51ddba1a-89bd-4da8-b4ae-771d60a317f0.zip. Надо добавить в проект фреймворк из директории dynamic.
Нашел проблему. Во время сборки динамического фреймворка в бинарном файле был использован другой BundleID относительно Info.plist. Исправим данную проблему в следующем релизе. Спасибо Вам за помощь!
Сейчас, чтобы решить локально эту проблему, добавьте в Ваш Podfile следующий хук:
post_install do |installer|
appmetricaPlistPath = "Pods/YandexMobileMetrica/dynamic/YandexMobileMetrica.framework/Info.plist"
appmetricaVersion = `/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' #{appmetricaPlistPath}`.strip
if ['2.6.0', '2.6.1', '2.6.2'].include? appmetricaVersion
system("/usr/libexec/PlistBuddy -c 'Set :CFBundleIdentifier org.cocoapods.YandexMobileMetrica' #{appmetricaPlistPath}")
system("plutil -convert binary1 #{appmetricaPlistPath}")
else
puts("Please, remove workaround for AppMetrica dynamic framework.")
end
end
@bamx23 Спасибо. Вы молодец. Буду ждать update. Хук тоже работает.
Кстати я создавал issue по поводу варингов, надеюсь поправите заодно. Не мешает, но глаза мазолит.
/Users/mezhevikin/Desktop/Projects/Dreams/ios/Pods/YandexMobileMetrica/dynamic/YandexMobileMetrica.framework/Headers/YMMYandexMetricaConfiguration.h:30:1: Conflicting nullability specifier on return types, 'nullable' conflicts with existing specifier 'nonnull'
/Users/mezhevikin/Desktop/Projects/Dreams/ios/Pods/YandexMobileMetrica/dynamic/YandexMobileMetrica.framework/Headers/YMMYandexMetricaPreloadInfo.h:18:1: Conflicting nullability specifier on return types, 'nullable' conflicts with existing specifier 'nonnull'
Да, конечно
Можете обновиться до версии 2.6.5, там решили эту проблему.
Если использовать динамический фремверк через cocapods, то проект после компиляции не запускается на реальном устройство и выдает ошибку:
This application's bundle identifier does not match its code signing identifier.
Подключаю так:
Чтобы вам легко было воспроизвести проблему, создал специальный проект для демонстрации бага - https://github.com/mezhevikin/AppmetrikaBug
При этом стоит отметить что если скомиплировать ipa adhoc файл, то файл устанавливается на устройство, на симуляторе тоже все работает, такая ошибка выскакивает если выбрать реальное устройство.