Я получил это сообщение об ошибке от терминала XCode:
Код: Выделить всё
dyld[2544]: Library not loaded: @rpath/Frameworks/libavcodec.framework/libavcodec
Referenced from: /private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Runner
Reason: tried: '/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file)
Library not loaded: @rpath/Frameworks/libavcodec.framework/libavcodec
Referenced from: /private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Runner
Reason: tried: '/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4
dyld config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/usr/lib/libLogRedirect.dylib:/usr/lib/libBacktraceRecording.dylib:/usr/lib/libMainThreadChecker.dylib:/usr/lib/libRPAC.dylib:/System/Library/PrivateFrameworks/GPUToolsCapture.framework/GPUToolsCapture:/usr/lib/libViewDebuggerSupport.dylib
Library not loaded: @rpath/Frameworks/libavcodec.framework/libavcodec
Referenced from: /private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Runner
Reason: tried: '/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4040-41F7-864D-D413A9FCB9EC/Runner.app/Frameworks/Frameworks/libavcodec.framework/libavcodec' (no such file), '/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/Frameworks/libavcodec.framework/libavcodec' (no such file), '/private/var/containers/Bundle/Application/EF79B901-4
dyld config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/usr/lib/libLogRedirect.dylib:/usr/lib/libBacktraceRecording.dylib:/usr/lib/libMainThreadChecker.dylib:/usr/lib/libRPAC.dylib:/System/Library/PrivateFrameworks/GPUToolsCapture.framework/GPUToolsCapture:/usr/lib/libViewDebuggerSupport.dylib
Я скомпилировал libavcodec и т. д., используя эти инструкции:
https://doc.qt.io/qt-6/qtmultimedia-bui ... g-ios.html
Я немного озадачен тем, что все работает в режиме отладки, но не в режиме выпуска.
Это есть ли что-то с путями поиска в моем файле Native_library.podspec, которое работает только в режиме отладки?
Вот мой файл `.podspec`:
Код: Выделить всё
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
# Run `pod lib lint native_library.podspec` to validate before publishing.
#
Pod::Spec.new do |s|
s.name = 'native_library'
s.version = '0.0.1'
s.summary = 'A new Flutter plugin project.'
s.description = 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
# Only expose the C-compatible API header to Swift/ObjC. Keep C++ headers private.
s.public_header_files = 'Classes/Interfaces/native_lib.h'
s.dependency 'Flutter'
s.platform = :ios, '13.0'
s.compiler_flags = '-O3'
# Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => ['i386'],
'HEADER_SEARCH_PATHS' => '$(inherited) "${PODS_TARGET_SRCROOT}/Classes/Interfaces"'
}
s.swift_version = '5.0'
s.preserve_paths = [
'Frameworks/opencv2.xcframework',
'Frameworks/onnxruntime.xcframework',
'Frameworks/libavcodec.xcframework',
'Frameworks/libavutil.xcframework',
'Frameworks/libavformat.xcframework',
'Frameworks/libswresample.xcframework',
'Frameworks/libswscale.xcframework',
'Frameworks/libavfilter.xcframework',
'Frameworks/libavdevice.xcframework',
]
s.vendored_frameworks = [
'Frameworks/opencv2.xcframework',
'Frameworks/onnxruntime.xcframework',
'Frameworks/libavcodec.xcframework',
'Frameworks/libavutil.xcframework',
'Frameworks/libavformat.xcframework',
'Frameworks/libswresample.xcframework',
'Frameworks/libswscale.xcframework',
'Frameworks/libavfilter.xcframework',
'Frameworks/libavdevice.xcframework',
]
s.xcconfig = { 'OTHER_LDFLAGS' => '-framework opencv2 -framework onnxruntime -framework libavcodec -framework libavutil -framework libavformat -framework libswresample -framework libswscale -framework libavfilter -framework libavdevice' }
s.frameworks = 'AVFoundation'
s.libraries = 'c++'
# If your plugin requires a privacy manifest, for example if it uses any
# required reason APIs, update the PrivacyInfo.xcprivacy file to describe your
# plugin's privacy impact, and then uncomment this line. For more information,
# see https://developer.apple.com/documentation/bundleresources/privacy_manifest_files
# s.resource_bundles = {'native_library_privacy' => ['Resources/PrivacyInfo.xcprivacy']}
end
Я попробовал сравнить opencv2 и libavcodec, используя
Код: Выделить всё
lipo -info libnameОбновление
Я проверил более раннюю версию, в которой я использую только opencv и onnxruntime. Затем он запускается на устройстве в режиме выпуска.
Может ли быть, что opencv также содержит библиотеки ffmpeg, такие как libavcodec?
Или может быть что-то не так в настройке моего xcframework для libavcodec?
Есть идеи о том, как выяснить, в чем заключается ошибка?
Подробнее здесь: https://stackoverflow.com/questions/798 ... in-release
Мобильная версия