El simulador de iOS falla mientras el dispositivo real no funciona

Trabajo en un proyecto que incluye varias bibliotecas integradas como pods por Cocoapods , ha pasado un time, pero creo que este error surgió primero cuando Cocoapods y no ha desaparecido desde entonces (así que empecé a usar un dispositivo real para probar mis comstackciones)

Como mencioné, no tengo problemas para build un dispositivo real, pero constantemente me enfrento al siguiente error al build en el simulador de iOS. Xcode completa la compilation con éxito y pone en marcha el simulador, que luego se bloquea tan pronto como intenta cargar la compilation.

 dyld: Symbol not found: _ACAccountTypeIdentifierTwitter Referenced from: .../Library/Developer/CoreSimulator/Devices/28482AD6-B0F2-4FBF-B525-C1EA3F2E07FA/data/Containers/Bundle/Application/D9992D1D-FE14-4403-A9DC-E5C1BB787E9E/projectName.app/projectName Expected in: flat namespace in .../Library/Developer/CoreSimulator/Devices/28482AD6-B0F2-4FBF-B525-C1EA3F2E07FA/data/Containers/Bundle/Application/D9992D1D-FE14-4403-A9DC-E5C1BB787E9E/projectName.app/projectName (lldb) 

Me cautelé con cambiar las opciones de enlace porque cuando enfrenté este problema primero, también afectó la construcción de Xcode, que luego falló una y otra vez debido a algunos errores difíciles de entender. Además, no utilizo ningún código específico de Twitter, simplemente parece ser parte de una biblioteca integrada.

¡Cualquier ayuda es muy apreciada, ya que me gustaría mucho poder build en el simulador nuevamente!

EDIT 1

Construir fases

Configuración de compilación

EDIT 2

 dyld`_dyld_start: 0x7fff6431d000 <+0>: popq %rdi 0x7fff6431d001 <+1>: pushq $0x0 0x7fff6431d003 <+3>: movq %rsp, %rbp 0x7fff6431d006 <+6>: andq $-0x10, %rsp 0x7fff6431d00a <+10>: subq $0x10, %rsp 0x7fff6431d00e <+14>: movl 0x8(%rbp), %esi 0x7fff6431d011 <+17>: leaq 0x10(%rbp), %rdx 0x7fff6431d015 <+21>: movq 0x37aec(%rip), %r8 ; _dyld_start_static 0x7fff6431d01c <+28>: leaq -0x23(%rip), %rcx ; <+0> 0x7fff6431d023 <+35>: subq %r8, %rcx 0x7fff6431d026 <+38>: leaq -0x102d(%rip), %r8 0x7fff6431d02d <+45>: leaq -0x8(%rbp), %r9 0x7fff6431d031 <+49>: callq 0x7fff6431d076 ; dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) -> 0x7fff6431d036 <+54>: movq -0x8(%rbp), %rdi 0x7fff6431d03a <+58>: cmpq $0x0, %rdi 0x7fff6431d03e <+62>: jne 0x7fff6431d050 ; <+80> 0x7fff6431d040 <+64>: movq %rbp, %rsp 0x7fff6431d043 <+67>: addq $0x8, %rsp 0x7fff6431d047 <+71>: movq $0x0, %rbp 0x7fff6431d04e <+78>: jmpq *%rax 0x7fff6431d050 <+80>: addq $0x10, %rsp 0x7fff6431d054 <+84>: pushq %rdi 0x7fff6431d055 <+85>: movq 0x8(%rbp), %rdi 0x7fff6431d059 <+89>: leaq 0x10(%rbp), %rsi 0x7fff6431d05d <+93>: leaq 0x8(%rsi,%rdi,8), %rdx 0x7fff6431d062 <+98>: movq %rdx, %rcx 0x7fff6431d065 <+101>: movq (%rcx), %r8 0x7fff6431d068 <+104>: addq $0x8, %rcx 0x7fff6431d06c <+108>: testq %r8, %r8 0x7fff6431d06f <+111>: jne 0x7fff6431d065 ; <+101> 0x7fff6431d071 <+113>: jmpq *%rax 0x7fff6431d073 <+115>: nop 

Lamentablemente, el simulador de iOS no es totalmente compatible con las counts de twitter. Su teléfono lo hace. La falla que _ACAccountTypeIdentifierTwitter es por falta de _ACAccountTypeIdentifierTwitter . Si quiere asegurarse de que eso no suceda en el simulador, donde sea que ACAccountType , verifique que ACAccountTypeIdentifierTwitter esté disponible. Lo mismo para Facebook, SinaWeibo y TencentWeibo.

Obj-C

Necesitas importar frameworks de Twitter y Accounts .

introduzca la descripción de la imagen aquí

Rápido

El proyecto completo a continuación comstack, comstack, vincula y ejecuta en el Simulador de iOS. Si sigue estas instrucciones, puede verificar en ningún momento la integridad de su entorno de desarrollo.

Proyecto

Xcode> Nuevo> Proyecto …> Aplicación de una sola vista , SO-Twitter , Swift, Universal, Siguiente, Crear.


Código

 import UIKit import Twitter import Accounts class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let accountStore = ACAccountStore() let accountType = accountStore.accountTypeWithAccountTypeIdentifier( ACAccountTypeIdentifierTwitter) accountStore.requestAccessToAccountsWithType(accountType, options: nil) {( granted:Bool, error:NSError!) -> Void in println("granted:\(granted) error:\(error)" )} } } 

Encima del código publicado en Github por conveniencia.


Enlace, compilation y ejecución en iOS Simulator

(Verificado tan atrás como Xcode 6.3.2 en Simulator 8.3)

introduzca la descripción de la imagen aquí

concedido: verdadero error: cero

Una vez que ha tocado, es probable que necesite iOS Simulator> Restablecer contenido y configuration …> Restablecer .

No use -undefined dynamic_lookup. Eso está causando que golpees la falla en time de ejecución en lugar de get un error más obvio y útil en el time de enlace. Si elimina eso de LDFLAGS, es probable que vea un post de error acerca de no poder resolver el símbolo _ACAccountTypeIdentifierTwitter y dónde se está utilizando.

_ACAccountTypeIdentifierTwitter es proporcionado por Accounts.framework:

 $ nm $(xcrun --sdk iphonesimulator --show-sdk-path)/System/Library/Frameworks/Accounts.framework/Accounts | grep _ACAccountTypeIdentifierTwitter 000000000003bdd0 S _ACAccountTypeIdentifierTwitter