Я пытаюсь проверить код, который читает и изменяет цепочку ключей, используя базовую структуру SenTest на Xcode. Код работает нормально на устройстве, но когда я запускаю тест, я получаю эти ошибки каждый раз, когда хочу коснуться брелка с помощью SecItemDelete
/SecItemAdd
/etc.
The operation couldn’t be completed. (OSStatus error -34018 - client has neither application-identifier nor keychain-access-groups entitlements)
У меня есть соответствующие профили подготовки подстановки (iOS Team Provisioning Profile: *
) как для цели сборки, так и для тестовой цели.
Эти (неподтвержденные) ответы:
Чтение из результатов связки ключей в errSecItemNotFound 25300
скажите, что мне нужен профиль обеспечения, соответствующий моему идентификатору приложения, каждый раз, когда я использую цепочку ключей, но это не может быть прав, или я получаю те же ошибки за пределами тестовой цели.
Копая глубже, ответы (неподтвержденные) здесь:
SecItemAdd и SecItemCopyMatching возвращают код ошибки -34018 (errSecMissingEntitlement)
подразумевает, что может быть ошибка в цепочке ключей и в целом Security.framework
, что откровенно страшно.
Мой вопрос: кто-нибудь ударил ошибку OSStatus -34018 только, когда они были на тестовой цели? Это похоже на то поведение, которое я вижу.
EDIT: добавив этот ответ, который JorgeDeCorte использовался в его ответе ниже.
Этот поток, кажется, содержит решение, если проблема выходит из вашей единичный тест.
https://devforums.apple.com/message/917498#917498
В основном вы должны координировать свою папку .xcttest, добавляя следуя за прогоном script в тестовой цели.
codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"
У меня появилось много ошибок -34018 при тестировании моего брелка на устройстве и это удалось исправить.
Если проблема не существует в вашей тестовой цели, это, вероятно, не решение.
Итак, я думаю, что решение: force sign your test target.