Red de conocimiento informático - Problemas con los teléfonos móviles - ¿El proyecto Xcode6 no se puede ejecutar en Xcode7?

¿El proyecto Xcode6 no se puede ejecutar en Xcode7?

Xcode7 es iOS9 y el programa ha realizado algunos ajustes, cavando un pequeño agujero para los programadores.

1. Bitcode en iOS9

En primer lugar, el mayor problema es el engaño de xcode7. La preparación para el procesamiento es el llamado problema del conjunto de instrucciones arm y del conjunto de instrucciones x64.

p>

Entonces, si nuestro proyecto utiliza una biblioteca de terceros empaquetada por otros, entonces ocurrirá el siguiente error

ld: '/UsersFramework/SDKs/PolymerPay/Library/mobStat/lib* *SDK.a(**ForSDK.o)' no contiene código de bits. Debe reconstruirlo con el código de bits habilitado (Xcodesetting ENABLE_BITCODE), obtener bibliotecas actualizadas del proveedor o deshabilitar el código de bits para este destino. Para la arquitectura arm64

El texto anterior muestra que nuestras bibliotecas de terceros no admiten código de bits; si necesita admitirlas, debe hacer que la biblioteca de terceros admita código de bits. La solución es similar a la solución cuando se actualiza MRC y ARC. Cuando se actualiza xcode5, el valor predeterminado para la creación del proyecto es ARC. Puede desactivar ARC a MRC. Después de un tiempo, todos comienzan a usar ARC. bitcode. El valor predeterminado está activado en xcode7, debemos desactivarlo, así que cómo desactivarlo

Cité el gif en un artículo como demostración

En BuildSetting, pasar Seleccione el código de bits en los destinos para buscar código de bits y luego cámbielo a no

Segundo, versión de iOS9: ], /BuildRoot/Library/Caches/com.apple .xbs/Sources/UIKit_Sim/UIKit-3505.16 /UIApplication.m: 3294 (proporcionado por el amigo del grupo sun)

En Info.plist, puede encontrar: "Nombre base del archivo del guión gráfico principal" Cadena "Principal", elimine esta entrada y reinicie, la pantalla se vuelve negro

Agregar ventana manualmente

- (BOOL)aplicación: (UIApplication *) aplicación didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {

// Punto de superposición para personalización después del lanzamiento de la aplicación.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] limites]]; // Ventana de pantalla completa

self.window.backgroundColor = [UIColor whiteColor]; // Fondo blanco

[self.window makeKeyAndVisible]; //

return YES;

}

Bueno, debido a xcode7 actualización Error informado, ¡este problema se ha resuelto!

Si ha realizado modificaciones de acuerdo con el método anterior pero aún encuentra que se informa el error, verifique si su proyecto se ha agregado a la página de arranque

Convierta lo anterior agregando método al siguiente método.

¡Este método de suma se puede usar antes de xcode7, pero no se puede escribir así después de xcode7!

6. El archivo .dylib no se puede encontrar (se pierde) y no se puede ejecutar porque ha sido reemplazado por un archivo .tbd. Utilice el siguiente método para resolver el problema.

Vaya a Fases de compilación > Vincular binario con bibliotecas > Agregar otro

Una vez en la ventana de selección de archivos, haga "CMD" Shift G (Ir a carpeta) y escriba /usr/lib /

Desde /user/lib puedes agregar: libz.dylib etc...

Compile el archivo con la siguiente información.

Compila y diviértete

Preguntas frecuentes sobre Xcode7 en el libro de Jane

/p/ef7bbe1c8393

A.Xcode7, ¿qué es? Xcode Hay fantasmas, fragmentos de código implantados, etc., que circularon después de iOS9. Puedes echar un vistazo a http://drops.wooyun.org/news/8864

Problema de Two.bitcode. La configuración puede ser incorrecta. Provoca problemas de compilación. Adaptarse a iOS9

1. La mayoría de las interfaces de plataformas sociales no admiten el protocolo https.

Descripción del problema: en iOS9, el sistema intercepta el acceso a la interfaz del protocolo http de forma predeterminada, por lo que no se pueden obtener datos de la interfaz del protocolo http. Para ShareSDK, la manifestación específica puede ser que no puede autorizar, compartir, obtener información del usuario, etc. Cuando utilizamos http u otras imágenes de red, también es posible que nuestra interfaz de edición no pueda mostrar capturas de pantalla de imágenes. La solución es desactivar https y permitir solicitudes http; o agregar el dominio de la imagen o elegir usar imágenes https

Solución (2 opciones de los siguientes métodos):

(1), vuelve temporalmente al protocolo http.

Método específico: agregue una clave: NSAppTransportSecurity en el info.plist del proyecto, el tipo es tipo diccionario. Luego agregue una clave: NSAllowsArbitraryLoads, el tipo es booleano, el valor es SÍ

Ejemplo

(2), establezca el dominio. Puede entenderse simplemente como configurar la interfaz que no admite el protocolo https en http.

Método específico:

1) Agregue una clave: NSAppTransportSecurity en el archivo info.plist del proyecto, el tipo es tipo diccionario.

2) Luego agregue un NSExceptionDomains en él, de tipo diccionario

3) Agregue los dominios admitidos requeridos en NSExceptionDomains, donde el dominio se usa como clave, de tipo diccionario; .

4) Se deben configurar tres propiedades en cada dominio: NSIncludesSubdomains, NSExceptionRequiresForwardSecrecy y NSExceptionAllowsInsecureHTTPLoads son todos tipos booleanos y sus valores son SÍ, NO y SÍ respectivamente.

Ejemplo

2. La mayoría de los SDK de plataformas sociales no admiten código de bits.

Descripción del problema: los nuevos proyectos de iOS 9 deben admitir código de bits de forma predeterminada, y los SDK que no admiten código de bits no podrán compilarse ni ejecutarse. Solución:

(1) Desactive temporalmente la compatibilidad con código de bits (recomendado) de la siguiente manera

(2) Elimine los SDK de plataforma que no admiten código de bits.

Ejemplo

3. Agregar lista blanca de esquemas

Descripción del problema: en iOS 9, cuando se trata de salto de cliente de plataforma. Para las plataformas que deben configurarse, si no hay configuración, no podrá saltar al cliente de la plataforma normalmente. Por lo tanto, para admitir el uso compartido de clientes, la autorización, etc., es necesario configurar listas de esquemas.

Método específico:

1) Agregar un LSApplicationQueriesSchemes en el info.plist del proyecto, de tipo Array.

2), y luego agregue un elemento que deba ser compatible, el tipo es tipo cadena

Ejemplo

Tres. Un ATS que no esté configurado correctamente puede causar problemas con algunas solicitudes web.

WDC 2015 descubrió que iOS 9 requerirá que las solicitudes de red utilicen el protocolo HTTPS. No es ningún secreto que Apple ha trabajado mucho en materia de seguridad y privacidad del usuario, incluidos mecanismos de zona protegida, firma de código y desactivación de API privadas. En la conferencia WWDC 2015 de junio de este año, Apple propuso el concepto de App Transport Security (ATS). La intención principal de esta característica es proporcionar una forma segura de comunicación entre nuestra aplicación y el servidor para evitar que intermediarios escuchen y manipulen los datos transmitidos. iOS 9 y OS X 10.11 admiten esta función de forma predeterminada. Este concepto también significa que Apple avanzará lentamente hacia el soporte de HTTPS y posiblemente abandonará HTTP.

Requisitos técnicos de seguridad de transporte de aplicaciones

Echemos un vistazo a los requisitos técnicos para ATS (consulte Descripción técnica de seguridad de transporte de aplicaciones):

1) El servidor debe ser compatible al menos la versión 1.2 del protocolo Transport Layer Security (TLS).

2) Las contraseñas de conexión se limitan a aquellas que proporcionan confidencialidad directa (consulte la lista de contraseñas a continuación).

3) El certificado debe firmarse utilizando el algoritmo hash de firma SHA256 o superior y utilizar una clave RSA de 2048 bits o superior o una clave de firma de curva elíptica (ECC) de 256 bits o superior.

Se puede ver que el servidor debe admitir TLS 1.2 o superior; se debe utilizar un cifrado que admita el secreto directo; el certificado debe firmarse utilizando un algoritmo hash de firma SHA-256 o superior si el certificado no es válido; , la conexión fallará.

Apple considera que esta es la mejor práctica actual para proteger las comunicaciones, especialmente cuando se utiliza TLS 1.2 y secreto directo.

Por supuesto, creemos que Apple se mantendrá al día y continuará revisando ATS para garantizar la seguridad de las comunicaciones de la red.

Configuración predeterminada

En iOS 9 y OS X 10.11, si nuestra aplicación utiliza API relacionadas con NSURLConnection, CFURL o NSURLSession para la comunicación de datos, los datos pasarán por ATS de forma predeterminada. En esta configuración, si usamos HTTP para comunicarnos, la solicitud falla con el siguiente error:

El recurso no se puede cargar porque la política de seguridad de transporte de la aplicación requiere una conexión segura.

Esto significa que si usa ATS, el protocolo HTTP no será compatible (lo hemos probado y dado que nuestro servicio de inicio de sesión usa el protocolo HTTP, ya no funciona en iOS 9). Creo que todavía hay una gran cantidad de aplicaciones que acceden a los servidores a través del protocolo HTTP. Obviamente, es una tarea que requiere mucho tiempo y trabajo hacer que todas las aplicaciones admitan HTTPS (a diferencia de este año, cuando todas las aplicaciones deben admitir ARM de 64 bits, fue solo en el nivel del cliente, mientras que ATS involucra el lado del servidor, que tiene un impacto mayor). Por lo tanto, Apple ofrece un programa de compatibilidad y así es como lo abordaremos.

Configuración personalizada

Teniendo en cuenta la situación real, es posible que no queramos utilizar la configuración predeterminada, o al menos necesitemos un periodo de transición. Por tanto, Apple nos permite configurarnos para modificar la configuración predeterminada en el archivo Info.plist (con excepciones). La siguiente tabla muestra algunas claves y sus correspondientes tipos y descripciones:

Ejemplo

Ejemplo

Ejemplo

Ejemplo

Ejemplo

Ejemplo

Ejemplo

IV. La configuración incorrecta que requiere pantalla completa puede provocar que falle la carga de la aplicación ITMS-90474 ITMS-90475

Ejemplo