yoomoney / yookassa-payments-swift

This library allows implementing payment acceptance into mobile apps on iOS and works as an extension to the YooMoney API
https://yookassa.ru/developers
MIT License
41 stars 41 forks source link

Краш с TrustDefender v.5.4.84 #39

Closed silaluka closed 5 years ago

silaluka commented 5 years ago

TL;DR: при запуске приложение краш с TrustDefender v.5.4.84, а релиз был позавчера.

Ранее использовал другую версию TrustDefender, но с появлением ios 13 при попытке оплаты банковской картой приложение (даже example) крашилось.

image На скрине версия sdk - 2.2.1, ios 13, xcode 11.0. Естественно, написал в саппорт. Там подсказали следующее:

"Ошибка происходит где то в недрах TrustDefender, возможно поможет интеграция новой версии."

Позже рекомендовали интегрировать новую версию TrustDefender. Получил новую (для меня) версию TrustDefender (5.4.84). Проблема осталась. Отписал в саппорт.

Разработчики, на данный момент, пытаются воспроизвести Вашу проблему. Пока порекомендовали сделать чистку в derived data.

Дропнул всё, что мог. Почистил все кеши и даже больше. Example взлетел - я был счастлив и рад. Интегрировал в свой проект - вернулся к привычному состоянию боли и грусти. Создал отдельный проект. Позже отдельного юзера. Результат один:

dyld: Library not loaded: @rpath/TrustDefender.framework/TrustDefender Referenced from: /Users/testUser/Library/Developer/CoreSimulator/Devices/4978321E-4047-43F7-9C90-89235F0C4EF7/data/Containers/Bundle/Application/BCF80D79-A078-43C4-933D-A32BDFB1392A/testesttest.app/Frameworks/YandexCheckoutPayments.framework/YandexCheckoutPayments Reason: image not found

Вернул старую версию TrustDefender - вернулся к старой проблеме при попытке совершить оплату банковской картой. Скрин краша был выше.

Итого:

oltv00 commented 5 years ago

@silaluka Привет.

Создал отдельный проект.

Можешь прислать проект?

silaluka commented 5 years ago

@oltv00

Можешь прислать проект?

Отправил проект на почту и в саппорт, так как TrustDefender в общий доступ кидать вы не разрешаете, как я понял. Магическое переключение между версиями фреймворка делается с помощью переименования.

image

oltv00 commented 5 years ago

Вот что удалось выяснить.

Xcode 11, iOS 13, тестовый проект, старый TrustDefender. При платеже получаю EXC_BAD_ACCESS, как и ожидалось.

Подключаю новый TrustDefender, делаю build->run, получаю dyld: Library not loaded: @rpath/TrustDefender.framework/TrustDefender, как и ожидалось.

Чтобы пофиксить dyld: Library not loaded: попробуй добавить TrustDefender в Frameworks, Libraries, and Embedded Content.

Выслал ответным письмом проект с фиксом.

И в процессе фикса нашел еще одну проблему. Проект не собирается под arm64 (все реальные девайсы). Чтобы починить эту проблему необходимо выключить bitcode в основном таргете, и на текущий момент еще в таргете Pods/YandexCheckoutPayments

Фикс с таргетом Pods/YandexCheckoutPayments будет в след версии YandexCheckoutPayments.

silaluka commented 5 years ago

Спасибо, вышеописанные действия помогли решить проблему.

Эту информацию, определенно, стоит добавить в доку/readme для таких же бедолаг вроде меня. Особенно, учитывая, что в https://github.com/yandex-money/yandex-checkout-payments-swift/issues/31 говорится, что никаких ссылок на TrustDefender не нужно.