Использование Parse iOS SDK с RubyMotion

RubyMotion предоставляет следующие инструкции по передаче стороннего кода: http://www.rubymotion.com/developer-center/guides/project-management/#_files_dependencies

Я пытаюсь добавить iOS SDK от Parse.com. Это инструкции по добавлению его в проект XCode: https://parse.com/apps/quickstart#ios/existing. Однако я не использую XCode, так как работаю с RubyMotion.

Я задокументировал свою попытку здесь: https://github.com/adelevie/RubyMotionSamples/commit/603bf4428969e8ebb203cce а>

И вот ошибки, которые я получаю: https://gist.github.com/2595284


person user94154    schedule 04.05.2012    source источник


Ответы (3)


Я считаю, что на самом деле мы имеем здесь дело со статической библиотекой, поэтому я считаю, что вы должны указать :static вместо :Xcode в качестве второго варианта.

Со следующим кодом в вашем Rakefile приложение компилируется:

    app.libs << '/usr/lib/libz.1.1.3.dylib'
    app.frameworks += [
        'AudioToolbox',
        'CFNetwork',
        'SystemConfiguration',
        'MobileCoreServices',
        'Security',
        'QuartzCore']

    app.vendor_project('vendor/Parse.framework', :static,
        :products => ['Parse'],
        :headers_dir => 'Heiders')

Однако я получаю следующую ошибку при запуске метода Parse setApplicationId:

(main)>> Objective-C stub for message `setApplicationId:clientKey:' type `v@:@@' not precompiled. Make sure you properly link with the framework or library that defines this message.
person richard    schedule 04.05.2012
comment
Я так и не понял. Вы смотрели на суть, которую я разместил? - person user94154; 05.05.2012
comment
Да, я сделал. Это единственное содержимое вашего метода приложения внутри AppDelegate? - person richard; 05.05.2012
comment
Эта суть была запущена в REPL и работала нормально. У меня это работает в app_delegate.rb: gist.github.com/2597444 По какой-то причине вызов #save throws Objective-C stub for message save' type c@:' not precompiled. Make sure you properly link with the framework or library that defines this message. Таким образом, решение состоит в том, чтобы вызвать #saveEventually, который отлично работает. Я новичок в iOS, поэтому у меня может быть неправильное представление. - person user94154; 05.05.2012
comment
Я думаю, что понял это: если я просто устанавливаюApplicationId, но не вызываю никаких методов позже в приложении, я получаю эту ошибку. Если я создаю фиктивный PFObject без необходимости его сохранения, я избегаю ошибки. Странно, но это работает. - person user94154; 06.05.2012
comment
Я получаю ту же ошибку. Не уверен, что понимаю решение @user94154. Единственный способ, которым я мог вызвать этот метод, — не вызывать его, пока мое приложение не загрузится. - person igorgue; 07.05.2012
comment
До сих пор не исправил это. Запрос объектов работает нормально, но вход в Facebook выдает ту же ошибку. - person richard; 07.05.2012
comment
У меня была такая же проблема при создании проекта с помощью aqtoolkit. В конце концов я изменил сигнатуру метода, исключив использование любых примитивных типов, и проблема исчезла. - person yuxhuang; 07.05.2012
comment
Возможно, начать новый вопрос SO для этого? - person user94154; 10.05.2012
comment
Это не работает для меня. Получите следующую ошибку при запуске rake: Неопределенные символы для архитектуры i386: _OBJC_CLASS_$_SKPaymentQueue, на которую ссылается: objc-class-ref в Parse(PFPurchase.o) objc-class-ref в Parse(PFPaymentTransactionObserver.o) _OBJC_CLASS_$_SKPayment, на который ссылается from: objc-class-ref в Parse(PFPurchase.o) _OBJC_CLASS_$_SKProductsRequest, на который ссылается: objc-class-ref в Parse(PFPurchase.o) ld: не найден(ы) символ(ы) для архитектуры i386 clang: ошибка: команда компоновщика ошибка с кодом выхода 1 (используйте -v, чтобы увидеть вызов) - person Flaviu; 29.07.2012

В связанной документации говорится: «Чтобы предоставить стороннюю библиотеку в проекте RubyMotion, исходный код должен быть доступен где-то в файловой системе». Поэтому я не думаю, что добавление файла .framework туда сработает.

Вы можете попробовать загрузить ParseStartProject под названием «Пустой Xcode с SDK» с сайта parse.com/docs. Если вы предоставите эту папку проекта, RubyMotion сможет найти проект xcode, как он ищет. Конечно, вы захотите удалить файлы .m и .h из проекта xcode, поскольку вы хотите, чтобы проект включал только Parse.framework.

Я на самом деле не пробовал это. Пожалуйста, дайте нам знать, если у вас все получится.

person bklimt    schedule 04.05.2012
comment
Проблемы с этим: skitch.com /e-adelevie/8a9mg/ Ошибка: Building vendor project vendor/ParseStarterProject' не удалось создать хотя бы один .a' library. - person user94154; 04.05.2012

Хорошо скопировал это из ответа в группе RubyMotion. Кажется, исправить сообщение об ошибке-заглушке:

Теперь, чтобы заставить это работать, я изменил /Library/RubyMotion/lib/motion/project/vendor.rb и изменил Dir.glob в строке 38 с:

source_files = (opts.delete(:source_files) or Dir.glob('*. 
{c,m,cpp,cxx,mm,h}')) 

to:

source_files = (opts.delete(:source_files) or Dir.glob('**/*. 
{c,m,cpp,cxx,mm,h}'))

http://groups.google.com/group/rubymotion/msg/0efa74214523d0f5

person Sander Hahn    schedule 09.05.2012