2013-10-20 33 views
1
  • 我正在研究一個需要與cocoalibspotify集成的項目。我有一些針對導入CocoaLibSpotify.h的類的單元測試用例。這些測試案例已經失敗,出現以下堆棧跟蹤:

斷言失敗的NSString *基地:: deviceIdFromKeychain()()/用戶/ Spotify的-buildagent/buildAgent /工作/ 1e0ce8a77adfb2dc /客戶/基/ _apple/_ios/os_ios.mm:287 2013-10-20 11:14:03.505 *因未捕獲異常'NSInternalInconsistencyException'而終止應用程序,原因:'獲取設備ID時出現鑰匙串錯誤,不可恢復' *第一次調用堆棧: (0x30f0cf53 0x3b2366af 0x30f0ce2d 0x318b41df 0x2d142f 0x2d1a09 0x2ce6db 0x17b1b5 0x1798b3 0x30ed81b9 0x30ed753b 0x30ed5e45 0x30e40ce7 0x30e84803 0x179b1d 0x318efe27 0x3b85dc1d 0x3b85db8f 0x3b85bc90) 的libC++ abi.dylib:TERMIN處理未捕獲的類型爲NSException的異常獲取設備ID時出現鑰匙串錯誤

引發異常的方法位於SPSession.m類中:CFRunLoopRun();

+(void)runBackgroundRunloop:(dispatch_block_t)runLoopReadyBlock { 
    @autoreleasepool { 
     [NSThread currentThread].name = @"com.spotify.CocoaLibSpotify"; 
     [runloopReadyLock lock]; 
     libspotify_runloop = CFRunLoopGetCurrent(); 
     sleep(1); 
     libspotifyThread = [NSThread currentThread]; 

     // Use a custom, no-op run loop source to keep the loop alive and fast. 
     CFRunLoopSourceContext libspotify_source_context; 
     memset(&libspotify_source_context, 0, sizeof(CFRunLoopSourceContext)); 
     libspotify_runloop_source = CFRunLoopSourceCreate(NULL, 0, &libspotify_source_context); 
     CFRunLoopAddSource(libspotify_runloop, libspotify_runloop_source, kCFRunLoopDefaultMode); 

     [runloopReadyLock unlockWithCondition:1]; 
     CFRunLoopRun(); 

     CFRelease(libspotify_runloop_source); 
     CFRelease(libspotify_runloop); 
     libspotify_runloop_source = NULL; 
     libspotify_runloop = NULL; 
     libspotifyThread = nil; 
    } 
} 

我不知道是什麼導致錯誤或如何解決它。有沒有人對此有任何想法?

感謝,

回答

1

確保您使用最新版本的CocoaLibSpotify的(2.4.5)。

另外,單元測試是如何運行的?你的應用程序運行正常嗎? CocoaLibSpotify自己的單元測試套件是否運行?值得注意的是,在設備解鎖之前,CocoaLibSpotify無法訪問鑰匙串。

+0

謝謝你的迴應。單元測試在ios7 XCTest框架下運行。 CocoaLibSpotify自己的單元測試套件可以正確運行。手動測試時,我的應用運行良好。它只是單元測試運行失敗。 「設備已解鎖」是什麼意思?如何確定我的設備是否已解鎖?謝謝 –