Статус: Участник
Группы: Участники
Зарегистрирован: 08.09.2022(UTC) Сообщений: 18  Откуда: Ярославль Сказал(а) «Спасибо»: 8 раз Поблагодарили: 1 раз в 1 постах
|
Доброго дня! На данный момент времени я занимаюсь написанием плагина с реализацией защищенного соединения от криптопро. Заранее отмечу, что локальная реализация отдельно для каждого приложения с помощью .xcframework работает корректно уже много времени. Однако, чтобы систематизировать работу было решено написать отдельный плагин. На данный момент для example проекта выставлено все ровно то же самое в Build Phases и в Settings, что выставлено в обычных прилах. Для плагина написан следующий .podspec файл: Цитата: Pod::Spec.new do |s| s.name = 'cryptopro_plugin' s.version = '0.0.1' s.summary = 'A new Flutter plugin project.' s.description = <<-DESC A new Flutter plugin project. DESC s.homepage = 'http://example.com' s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } s.source_files = 'Classes/**/*.{h,m,mm,swift}' s.dependency 'Flutter' s.platform = :ios, '14.0'
s.ios.framework = 'CPROCSP' s.vendored_frameworks = 'CPROCSP.xcframework', 'CPROCSP.xcframework/readers/libcsp_scards.o'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS' => 'arm64 armv7', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 x86_64 arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 x86_64 arm64' } s.swift_version = '5.0'
end
xcode build успешно билдится, .xcframework виден в Pods, но когда доходит до ios build, то возникает следующая ошибка: Цитата:Error (Xcode): Undefined symbol: _SCardBeginTransaction
Error (Xcode): Undefined symbol: _SCardConnect
Error (Xcode): Undefined symbol: _SCardDisconnect
Error (Xcode): Undefined symbol: _SCardEndTransaction
Error (Xcode): Undefined symbol: _SCardEstablishContext
Error (Xcode): Undefined symbol: _SCardListReaders
Error (Xcode): Undefined symbol: _SCardReconnect
Error (Xcode): Undefined symbol: _SCardReleaseContext
Error (Xcode): Undefined symbol: _SCardStatus
Error (Xcode): Undefined symbol: _SCardTransmit
Error (Xcode): Undefined symbol: _g_rgSCardT0Pci
Error (Xcode): Undefined symbol: _g_rgSCardT1Pci
Error (Xcode): Undefined symbol: _main Отмечу, что в .xcframework в readers папке присутствуют библиотеки librdrpcsc_empty.o, libcsp_scards.o и libcsp_cryptoki.o и также директория Alladin. Не подскажете, пожалуйста, в чем может быть дело?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.09.2022(UTC) Сообщений: 18  Откуда: Ярославль Сказал(а) «Спасибо»: 8 раз Поблагодарили: 1 раз в 1 постах
|
Сегодня решил полностью все переписать, потому что уткнулся в проблему, которую никак не мог решить... Пересоздал тестовый проект и переписал podspec с чистого листа. Теперь валится такая ошибка: Цитата:Error (Xcode): Undefined symbol: _CSP_GetLastError
Error (Xcode): Undefined symbol: _CertCloseStore
Error (Xcode): Undefined symbol: _CertEnumCertificatesInStore
Error (Xcode): Undefined symbol: _CertGetCertificateContextProperty
Error (Xcode): Undefined symbol: _CertOpenStore
Error (Xcode): Undefined symbol: _CryptAcquireContextA
Error (Xcode): Undefined symbol: _CryptBinaryToStringA
Error (Xcode): Undefined symbol: _CryptGetProvParam
Error (Xcode): Undefined symbol: _CryptReleaseContext
Error (Xcode): Undefined symbol: _curl_easy_cleanup
Error (Xcode): Undefined symbol: _curl_easy_getinfo
Error (Xcode): Undefined symbol: _curl_easy_init
Error (Xcode): Undefined symbol: _curl_easy_perform
Error (Xcode): Undefined symbol: _curl_easy_setopt
Error (Xcode): Undefined symbol: _curl_global_init
Error (Xcode): Undefined symbol: _curl_slist_append
Error (Xcode): Undefined symbol: _curl_slist_free_all
Error (Xcode): Undefined symbol: _support_registry_put_bool .podspec выглядит так: Цитата:Pod::Spec.new do |s| s.name = 'cryptopro_plugin' s.version = '0.0.1' s.summary = 'CryptoPRO Flutter plugin' s.description = <<-DESC Flutter plugin for CryptoPRO cryptographic services support. DESC s.homepage = 'http://example.com' s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } s.source_files = 'Classes/**/*.{h,m,mm,swift}' s.dependency 'Flutter' s.platform = :ios, '14.0'
s.static_framework = true # Проверка существования framework if !File.exist?('./CPROCSP.xcframework') puts "[Warning] CPROCSP.xcframework not found at expected path: #{File.expand_path('./CPROCSP.xcframework')}" else puts "[Info] CPROCSP.xcframework found and will be vendored" end # Системные зависимости s.libraries = 'c++', 'z', 'sqlite3' s.frameworks = 'Security', 'Foundation', 'SystemConfiguration' s.vendored_frameworks = 'CPROCSP.xcframework'
# Детальные настройки компилятора s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', # Принудительная линковка всех символов 'OTHER_LDFLAGS' => '$(inherited) -ObjC -all_load -framework Security -lc++ -lz -lsqlite3', 'HEADER_SEARCH_PATHS' => [ '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers/curl"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers/pki"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-arm64_armv7/CPROCSP.framework/Headers/reader"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers/curl"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers/pki"', '"${PODS_ROOT}/cryptopro_plugin/CPROCSP.xcframework/ios-x86_64-simulator/CPROCSP.framework/Headers/reader"' ].join(' '), 'VALID_ARCHS' => 'arm64 armv7 x86_64' } s.user_target_xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '"${PODS_ROOT}/your_plugin/CPROCSP.xcframework"' }
s.swift_version = '5.0' end
Также я для полной автономности плагина у example проекта, который проверяет работу плагина, убрал все либы и фреймы из раннера, чтобы билд получался максимально независимым. Не подскажете, нет ли никакой инструкции, как можно грамотно подключить ваш CPROCSP.xcframework с помощью .podspec? Отредактировано пользователем 1 ноября 2025 г. 11:34:14(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.09.2022(UTC) Сообщений: 18  Откуда: Ярославль Сказал(а) «Спасибо»: 8 раз Поблагодарили: 1 раз в 1 постах
|
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close