2011-04-08 78 views
1

我最近升級到xCode 4.0.1以便使用最新的iOS SDK(4.3)。我目前正在爲iOS 3.X設備開發,但在不久的將來希望擴展到iOS 4.X。無法運行使用iOS SDK 4.3編譯的iOS 3.X應用程序

問題是,我似乎無法成功運行我的當前3.X設備上的任何東西。據我瞭解,4.3 SDK支持編譯到所有版本的iOS 3.0及其後續,當然我可以編譯這樣的應用程序就好了。但是,如果我嘗試在模擬器或設備上運行它,它會開始加載,然後崩潰。

現在我只是試圖讓默認的基於窗口的應用程序運行沒有任何修改。我選擇了4.3作爲基礎SDK,並將我的部署目標設置爲3.0。我可以從3.0版本中選擇每個版本的iOS作爲我的構建目標,但只有使用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. 

我猜測,沿線某處,應用程序的不正確設置鏈接到3 .X版本的API,因此「無法讀取符號」的東西出現在日誌中。我似乎無法弄清楚如何糾正這種情況。

任何建議感激地讚賞!

回答

3

沒有「3.x API的鏈接」,這裏只是你建立的SDK。該SDK向後兼容,以便在3.x設備上正常運行。

仔細檢查您在xcodeproj級別目標級別上的設置是否正確。如果所有這些都是正確的,那麼它應該在3.1設備上工作得很好。

如果不工作,那麼這裏有在黑暗中的一些鏡頭,可以幫助:

  • 重新啓動Mac 的iPhone 3.x的設備
  • 刪除&重新添加必要的資源調配profile
  • 仔細檢查您的證書是否有效
  • 確保項目中沒有權利文件&調試版本的目標設置
  • 清潔所有目標
  • 構建&再次運行

如果沒有這個工程,你可能有一個破碎的安裝的Xcode 4的。

希望這有助於:)

+0

感謝您的建議。看起來它最終可能是供應配置文件 - 僅僅爲了一個百靈之源,我嘗試了一個全新的手機來查看它是否可行(當然這需要更新供應配置文件),並且它工作正常。再次感謝! – Mac 2011-04-12 01:43:05

+0

很高興能幫到你! – 2011-04-13 22:32:14

0

您是否將iOS 3.x指定爲目標?如果您將構建目標設置爲最新版本(4.3),那麼將需要該版本。

+0

。是的,試過了,我已經嘗試設置我的BU了從3.0到4.3的每個版本都可以生成目標,並且只有4.3版本(然後,只有在模擬器上,因爲我有3.1.3手機)。 – Mac 2011-04-08 03:41:03

+0

@Mac你有沒有嘗試在模擬器中更改設備? – 2011-04-08 03:43:36

+0

我唯一的選擇是「iPhone」,「iPhone(Retina)」和「iPad」。我一直在使用「iPhone」進行測試。 – Mac 2011-04-08 03:46:23

0

您是否嘗試刪除3.x版本的框架庫,並在4.x版本中再次替換,然後清理n建築?

+0

這不是我正在遷移的3.x項目(無論如何都是在這個階段),所以沒有3.x版本 - 我試圖獲得在xCode 4中創建的*全新*項目的工作。也就是說,我試過手動更換框架,並沒有任何改進。感謝您的建議,但這似乎也不成問題。 – Mac 2011-04-08 05:08:16

0

項目

指定鍵IOS部署目標爲3.2

您編譯4.3的開放生成設置。但是你的應用程序也可以在3.2設備上運行..注意你調用的方法...如果你使用的方法只在4.3框架中,你必須在運行時使用if([object respondsToSelector:您的應用程序會崩潰以前的iOS

0

開放構建

集基地SDK:例如IOS versionyou想

然後

開放的目標,然後雙擊它打開構建然後設置基地的SDK

相關問題