Невозможно запустить приложение iOS 3.X, скомпилированное с iOS SDK 4.3 - PullRequest
1 голос
/ 08 апреля 2011

Я недавно обновился до xCode 4.0.1, чтобы использовать последнюю версию iOS SDK (4.3).В настоящее время я занимаюсь разработкой для устройств iOS 3.X, но в ближайшем будущем я планирую расширить ее до iOS 4.X.

Проблема в том, что я не могу запустить что-либо на моем текущем 3.X устройства.Насколько я понимаю, 4.3 SDK поддерживает компиляцию для всех версий iOS 3.0 и последующих, и, конечно, я могу компилировать такие приложения просто отлично.Но если я пытаюсь запустить его в симуляторе или на устройстве, он начинает загружаться, а затем просто падает.

Сейчас я просто пытаюсь запустить приложение на основе окна по умолчанию без каких-либо изменений.Я выбрал 4.3 в качестве базового SDK и установил цель развертывания 3.0.Я могу выбрать любую версию iOS от 3.0 и выше в качестве цели сборки, но только с использованием 4.3, похоже, на самом деле все работает.

Когда я запускаю приложение на своем телефоне, я получаю в журналах следующее:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:56:02 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin --target=arm-apple-darwin".tty /dev/ttys002
warning: Unable to read symbols from "dyld" (prefix __dyld_) (not yet mapped into memory).
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1.3 (7E18)/Symbols/System/Library/Frameworks/UIKit.framework/UIKit (file not found).
warning: Unable to read symbols from "UIKit" (not yet mapped into memory).
warning: Unable to read symbols from "Foundation" (not yet mapped into memory).
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1.3 (7E18)/Symbols/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (file not found).
warning: Unable to read symbols from "CoreGraphics" (not yet mapped into memory).
warning: Unable to read symbols from "libgcc_s.1.dylib" (not yet mapped into memory).
warning: Unable to read symbols from "libSystem.B.dylib" (not yet mapped into memory).
warning: Unable to read symbols from "libobjc.A.dylib" (not yet mapped into memory).
warning: Unable to read symbols from "CoreFoundation" (not yet mapped into memory).
target remote-mobile /tmp/.XcodeGDBRemote-18423-39
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
[Switching to process 11779 thread 0x0]
[Switching to process 11779 thread 0x0]
gdb stack crawl at point of internal error:
0   gdb-arm-apple-darwin                0x000000010010974a internal_vproblem + 308
1   gdb-arm-apple-darwin                0x0000000100109924 internal_verror + 27
2   gdb-arm-apple-darwin                0x00000001001099c2 align_down + 0
3   gdb-arm-apple-darwin                0x0000000100150c5e macosx_solib_add + 794
4   gdb-arm-apple-darwin                0x000000010016417c remote_macosx_complete_create_or_attach + 187
5   gdb-arm-apple-darwin                0x000000010016489e remote_macosx_create_inferior + 1252
6   gdb-arm-apple-darwin                0x000000010005f6c3 run_command_1 + 586
7   gdb-arm-apple-darwin                0x0000000100107b7f execute_command + 557
8   gdb-arm-apple-darwin                0x00000001000171e7 mi_execute_async_cli_command + 204
9   gdb-arm-apple-darwin                0x00000001000168e5 captured_mi_execute_command + 344
10  gdb-arm-apple-darwin                0x0000000100072a62 catch_exception + 57
11  gdb-arm-apple-darwin                0x000000010001443e mi_execute_command + 140
12  gdb-arm-apple-darwin                0x0000000100077721 process_event + 133
13  gdb-arm-apple-darwin                0x0000000100078435 gdb_do_one_event + 1049
14  gdb-arm-apple-darwin                0x0000000100072b49 catch_errors + 70
/SourceCache/gdb/gdb-1518/src/gdb/macosx/macosx-nat-dyld.c:1648: internal-error: unrecognized shared library breakpoint
A problem internal to GDB has been detected,
further debugging may prove unreliable.

Я предполагаю, что где-то вдоль линии приложение не настроено правильно для связи с API версии 3.X, следовательно, в журналах появляется материал «не удается прочитать символ».Я просто не могу понять, как исправить ситуацию.

Любые предложения с благодарностью приветствуются!

Ответы [ 5 ]

3 голосов
/ 12 апреля 2011

Нет «связывания API 3.x», есть только SDK, с которым вы строите. SDK обладает обратной совместимостью для правильной работы на устройствах 3.x.

Дважды проверьте правильность настроек на уровне xcodeproj и целевого уровня. Если все это правильно, то на устройстве 3.1 оно должно работать нормально.

Если это не работает, вот несколько снимков в темноте, которые могут помочь:

  • перезагрузите Mac и устройство iPhone 3.x
  • Удалите и повторно добавьте необходимый профиль обеспечения
  • проверьте, действителен ли ваш сертификат
  • Убедитесь, что в вашем проекте и целевых настройках отсутствуют файлы разрешений для отладочной сборки
  • Очистить все цели
  • Построить и запустить снова

Если ничего из этого не работает, возможно, у вас установлена ​​неправильная установка Xcode 4.

Надеюсь, это поможет:)

0 голосов
/ 13 апреля 2011

открыть сборку

установить базовый sdk: пример ios versionyou хотите

затем

открыть цель и дважды щелкнуть по ней, открыть сборку, затем установить базовый sdk.

0 голосов
/ 12 апреля 2011

Открыть настройки Build вашего проекта

Укажите ключ IOS DEPLOYMENT TARGET как 3.2

Вы компилируете для 4.3.Но ваше приложение будет работать и на устройствах 3.2. Обратите внимание на методы, которые вы вызываете ... Если вы используете методы только в рамках 4.3, вы должны проверить его во время выполнения, используя if ([object responsedsToSelector: ... в противном случаеВаше приложение будет зависать на предыдущей iOS

0 голосов
/ 08 апреля 2011

Вы пытались удалить библиотеки фреймворков из версии 3.x и снова заменить их в версии 4.x, а затем очистить n build ??

0 голосов
/ 08 апреля 2011

Вы указали iOS 3.x в качестве своей цели?Если вы установите цель сборки на последнюю версию (4.3), то эта версия потребуется.

...