2012-07-27 85 views
3

我爲iPad開發了一個應用程序。Facebook-iOS-SDK:如何糾正構建框架並將其添加到項目?

現在,我在iPad-5.1模擬器上測試應用程序。

而對於我的不快,應用程序崩潰。

1)I使用FacebookSDK 3.0
2)編譯FacebookSDK到框架FBiOSSDK
3)添加框架FBiOSSDK突出
4)看的日誌接頭
5)體系結構i386的未定義符號: 「_sqlite3_open_v2」和許多「_sqlite3_ *」符號。

也許我將錯誤的選項設置爲框架時,將其設置爲facebook-sdk項目?

任何人都可以幫忙嗎?

搜索後,我找到一個解決方案:

「添加到項目libsqlite3.0.dylib」

鏈接說: 「忽略文件/path/libsqlite3.dylib,缺少必要的架構I386文件」

- 主要問題 -

一個小時之後,我發現,我在錯誤的方式鏈接的框架。

腳本創建它在本地目錄(不系統/庫/框架庫/框架)。

添加後,Framework Search Paths更改爲非默認值。

如何以正確的方式構建框架?

謝謝!

+0

嘗試清理項目構建設置中的框架搜索路徑,這裏是關於libsqlite的問題:http://stackoverflow.com/questions/1456185/build-error-missing-required-architecture-i386-in-file – medvedNick 2012-07-27 11:09:16

+0

and make確定你已經爲i386編譯FBiOSSDK(參見構建設置 - >架構) – medvedNick 2012-07-27 11:24:15

+0

謝謝,我明白我的錯。但如何將項目編譯爲* .framework以從默認/框架目錄添加它?我使用shell腳本來構建它,這與facebook-sdk – gaussblurinc 2012-07-27 11:40:31

回答

5

所以,很長一段時間後,我做出這樣的事情,使這個FacebookSDK工作:

1)首先,我刪除的FacebookSDK框架室射頻版本)和運行腳本建築框架(build_framework.sh

2)在此之後,我加入到項目(項目 - >構建階段 - >鏈接二進制文件庫FacebookSDK。框架(從本地目錄,使用按鈕添加其他)和libsqlite3.0dyliblibsqlite3.dylib(僅搜索它在搜索領域!)

0)或3 )然後我做這個:找到目錄〜/ Library/Developer/Xcode/DerivedData並刪除所有的從這。 (使用命令rm -rf dir_name/*

您可以從步驟3)中完成,我也將其命名爲步驟0)。

這裏我提供了一個腳本,它可以幫助你

#!/usr/bin/perl 
my $pathToCacheDirectory = qq(~/Library/Developer/Xcode/DerivedData/); 

sub TaskToDo{ 
    my ($refToArgv)[email protected]_; 
    die "can't work with too much parameters" unless(scalar(@$refToArgv)==1); 
    my $what = shift @$refToArgv; 
    my $time = 30; #wait 30 seconds in each iteration 
    my $workRef = sub{ 
     print "i will delete: "; 
     print qx(ls $pathToCacheDirectory); 
    qx(rm -rf $pathToCacheDirectory); 
    }; 
    #view help 
    if ($what eq 'help'){ 
     print qx(perldoc -t $0); 
    } 
    #list directory 
    if ($what eq 'watch'){ 
    print qx(ls $pathToCacheDirectory); 
    } 
    #kill files instantly 
    if ($what eq 'now'){ 
    print 'kill now'.qq(\n); 
    $workRef->(); 
    print 'see result'.qq(\n); 
    print qx(ls $pathToCacheDirectory); 
    } 
    #switch on watcher 
    if ($what eq 'work'){ 
    for(;;){ 
     #in INF loop 
     for my $s(0..4){ 
     #print "this is <<$_>>\n"; 
     print "time remaining: ".(5-$s)*$time." sec \n"; 
     sleep($time); 
     } 
     $workRef->();  
     sleep(10); 
    } 
    } 
} 

TaskToDo(\@ARGV); 



__END__ 

=head1 DESCRIPTION 

This script clear directory with cache from Xcode 

    -- 'help' will show this log 

    -- 'work' will run script as observer and killer 

    -- 'watch' will show info about directory with cache 

    -- 'now' will kill all instantly 

    Example: perl scriptName.pl help 

=cut 
0

我發現是去到目標信息,並刪除Xcode中創建的框架搜索路徑的解決方案。然後一切編譯正確。

相關問題