После нескольких дней поиска я наконец нашел решение!
1) как только ваши файлы sqlite_extension.h и sqlite_extension.c были перемещены в папку sqlite_extension
2) перейдите в эту папку sqlite_extension
3) скомпилируйте ваш код, используя:
gcc -g -fPIC -std=gnu99 -current_version 1.0 -compatibility_version 1.0 -dynamiclib -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk sqlite_extension.c -o sqlite_extension.dylib
Возможно, вам придется изменить путь SDK для чего-то вроде ../iPhoneOSN.M.sdk, где NM указывает последнюю доступную версию iOS, посмотрите в папку "/Applications/Xcode.app/Contents/Developer/ Платформы / iPhoneOS.platform / Developer / SDKs / "для поиска существующего пути
4) Вы можете проверить полученный файл, используя:
file /path/to/your/sqlite_extension.dylib
который должен вернуть что-то вроде:
/./././sqlite_extension.dylib (for architecture armv7): Mach-O dynamically linked shared library arm
/./././sqlite_extension.dylib (for architecture arm64): Mach-O 64-bit dynamically linked shared library
или используя более подробную информацию:
otool -l sqlite_extension.dylib
5) Теперь ваша библиотека должна быть подписана кодом с той же идентификацией, что и ваше приложение для встраивания, вы можете сделать это, используя:
codesign -fs "your_apple_identity" sqlite_extension.dylib
your_apple_identity может быть в форме "your_name: your_apple_login_email@address.xxx"
Лучший способ убедиться в этом - скопировать файл из исполняемого файла встроенного приложения, скомпилированного и запущенного на вашем устройстве, с помощью Xcode или архива на вашем компьютере, используя:
codesign --display --verbose=4 ~/Library/Developer/Xcode/Archives/2016-09-25/YourApp\ 25-09-2016\ 12.00.xcarchive/Products/Applications/YourApp.app/YourApp
Строка, которую следует использовать вместо "your_apple_identity", - это строка, найденная после первого вхождения Authority =
6) После того, как ваша библиотека подписана под кодом, вы можете проверить, что вы получаете информацию о подписи, аналогичную вашему приложению, используя ту же команду:
codesign --display --verbose=4 sqlite_extension.dylib
7) Ваша библиотека теперь готова для встраивания в ваше приложение, все что вам нужно, это убедиться, что Xcode обновляет файл библиотеки, если вы пробовали предыдущий файл с тем же именем. Для этого вы можете удалить прежний файл, скомпилировать и запустить его на своем устройстве, вернуть новый файл, убедившись, что он находится в «Ресурсах комплекта копирования», а не в «Связывать двоичные файлы с библиотеками» на вкладке «Фазы сборки» приложения
Ваше расширение должно загружаться без ошибок, когда ваше приложение запрашивает SQLite для его использования
iOS 9.3.5
Xcode 8.0
SQLite 3.9.2