2015-02-27 6 views
1

Я пытаюсь префикс статической библиотеки PayPal, поэтому клиенты, реализующие нашу инфраструктуру, могут использовать другую версию. Я слежу за this article и this post, но у меня возникают некоторые проблемы.Отфильтровать нежелательные символы при префиксах статической библиотеки в iOS

  1. Я создал цель и добавил libPayPalMobile.a для связи с бинарными библиотеками.
  2. Я добавил run script, упомянутый в учебниках выше.
  3. Я добавил свою цель в качестве зависимости от проекта.

После 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 

ответ

1

Вместо того, чтобы распространять библиотеку PayPal как часть вашего собственного, я призываю вас, чтобы выразить зависимость, так что разработчики всегда получают Последняя версия.

Я также рекомендую вам использовать PayPal iOS SDK, или еще лучше, SDK Braintree (включая PayPal), а не устаревший MPL. Оба Braintree и SDK iOS публикуют в Cocoapds, чтобы облегчить управление зависимостями.

+0

Я понимаю ваш подход. Хотя нам пришлось бы заставить разработчиков использовать последнюю версию SDK PayPal. Некоторые из приложений, которые интегрируют нашу структуру, довольно старые, и мы хотели бы избежать принуждения разработчиков к внесению изменений в их корневое приложение. – Mercurial

+1

Поддержание поддержки более старой интеграции имеет смысл. Тем не менее, разработка функций остановилась на старых SDK и API, поэтому эти интеграции не смогут воспользоваться обновленным опытом пользователей. Мне бы очень хотелось увидеть, что новая интеграция идет по этому пути. – tomwhipple

Смежные вопросы