Я пытаюсь префикс статической библиотеки PayPal, поэтому клиенты, реализующие нашу инфраструктуру, могут использовать другую версию. Я слежу за this article и this post, но у меня возникают некоторые проблемы.Отфильтровать нежелательные символы при префиксах статической библиотеки в iOS
- Я создал цель и добавил libPayPalMobile.a для связи с бинарными библиотеками.
- Я добавил run script, упомянутый в учебниках выше.
- Я добавил свою цель в качестве зависимости от проекта.
После NamespacedDependencies.h
получает генерируется, я вижу некоторые нежелательные символы в разделе экстернов:
// Externs
#ifndef k1PasswordButtonWidth
#define k1PasswordButtonWidth __NS_SYMBOL(k1PasswordButtonWidth)
#endif
#ifndef k1PasswordButtonRightMargin
#define k1PasswordButtonRightMargin __NS_SYMBOL(k1PasswordButtonRightMargin)
#endif
l002
l003
l004
l003
l004
l005
l006
l001
l007
l002
l008
l003
l009
l010
l007
l011
l004
l012
l008
l009
l005
l010
l011
l003
l012
l004
l003
l005
l013
l003
l006
l004
l014
l003
l015
l007
l004
l016
l004
l008
l001
l005
l005
l002
...
Я полагал, что я мог бы удалить их с помощью grep -v "l[0-9]{0,5}"
, но они, похоже, сбрасывали с указанными выше символами, смысл Я не могу просто отфильтровать их.
Очевидно, проблема в том, что я даже не могу скомпилировать, так как получаю Parse Issue: Unknown type name l002
.
Любая идея, что это за злые вещи и как избавиться от них?
EDIT: Это экстернов часть сценария:
echo "// Externs" >> $header
nm $CODESIGNING_FOLDER_PATH | sort | uniq | grep " D " | cut -d' ' -f3 | grep -v "\$_NS" | grep -v "\$_UI" | sed -e 's/_\(.*\)/#ifndef \1\'$'\n''#define \1 __NS_SYMBOL(\1)\'$'\n''#endif\'$'\n''/g' >> $header
nm $CODESIGNING_FOLDER_PATH | sort | uniq | grep " S " | cut -d' ' -f3 | grep -v "\$_NS" | grep -v ".eh" | grep -v "\$_UI" | grep -v "OBJC_" | sed -e 's/_\(.*\)/#ifndef \1\'$'\n''#define \1 __NS_SYMBOL(\1)\'$'\n''#endif\'$'\n''/g' >> $header
Я понимаю ваш подход. Хотя нам пришлось бы заставить разработчиков использовать последнюю версию SDK PayPal. Некоторые из приложений, которые интегрируют нашу структуру, довольно старые, и мы хотели бы избежать принуждения разработчиков к внесению изменений в их корневое приложение. – Mercurial
Поддержание поддержки более старой интеграции имеет смысл. Тем не менее, разработка функций остановилась на старых SDK и API, поэтому эти интеграции не смогут воспользоваться обновленным опытом пользователей. Мне бы очень хотелось увидеть, что новая интеграция идет по этому пути. – tomwhipple