development - Error en el envío de la aplicación: 1+ binarios dañados/uso de API no público y sin detalles adicionales
submit app to app store (9)
Después de MUCHAS investigaciones sobre esta parte, finalmente encontramos el problema para este problema: parece que Apple da este error para las aplicaciones que soportan 32 y 64 bits.
Apple dio this recordatorio para Mac Appstore, pero parece que las aplicaciones de iOS también se ven afectadas.
Por lo tanto, una solución para esto es admitir código de bits O eliminar el soporte para dispositivos de 32 bits eliminando el soporte para ARMV7 y ARMV7S o debajo de Valid Architectures de las configuraciones de compilación. Esto significará que su aplicación funcionará solo en iPhone 5S y superior. Espero que esto ayude a alguien. ¡Gracias!
He estado enviando mi aplicación a la App Store para un vuelo de prueba y después de la compilación 11, he estado recibiendo fallos por correo electrónico de Apple:
Uso de API no público: la aplicación contiene uno o más archivos binarios dañados. Reconstruir la aplicación y volver a enviar
No obtengo detalles adicionales de ellos. No hay nombres de método o clases ni nada.
He enviado la compilación 15, por ejemplo, que es literalmente una copia exacta de la compilación 11 (¡que se aprobó!) Con un número de versión y la compilación 15 falló.
Creo que esto es un error de Apple, aunque no tengo otra forma de demostrarlo, aparte del párrafo anterior. Las compilaciones 1-11 funcionaron bien y se pudieron cargar y distribuir.
Estoy usando Xcode 9.1 y 9.2, ambos dan el mismo error.
También me puse en contacto con Apple a través de DTS y me dijeron que no podían ayudarme.
¿Qué hago ahora?
Encontré la solución por mi cuenta después de subir la novena versión.
- He usado alguna clase swift en el código fuente de object-c que usé en un puente. Mientras crea el proyecto, puede ver una advertencia del panel izquierdo relacionada con el proyecto y hay una línea que dice actualización para swift 4.
- Después de convertir swift 4 recibo algunas advertencias más como usar @objc para usar swift 3 al último código de swift 4.
Puede consultar cómo utilizar @objc en la clase swift. Consulte este enlace: ¿ El uso de la inferencia Swift 3 @objc en el modo Swift 4 está en desuso?
Entonces he cambiado los perfiles no utilizados.
Luego subo la aplicación y funciona. Déjame saber si alguien necesita ayuda.
Nuestros proyectos que no tenían habilitado el código de bits comenzaron a fallar el viernes 2018-01-26. La configuración de Enable Bitcode
de Enable Bitcode
en Yes
en la configuración de compilación de esos proyectos resolvió el problema.
Parece que el problema se solucionó en el backend de iTunes Connect. Después de la construcción 45 terminamos ayer por la noche. Intenté descubrir qué solucionó el problema de todos esos cambios; parece que ahora también se lleva a cabo con la construcción inicial.
Así que tres días podría haber pasado afuera ...
Pude resolverlo por mí mismo, esto es lo que hice:
- El código de bits está deshabilitado en mi proyecto y permanece deshabilitado
- Saqué 3 cápsulas, una de ellas CommonCrypto, que había olvidado que tenía (las otras 2 eran QRCode y SwiftyJSON)
- Quité sus banderas de vinculador también en la configuración de compilación
¡Espero que eso ayude!
Recientemente, desde el 26 de enero de 2018, sin ningún aviso o anuncio, Apple realizó algún cambio en el antiguo código que ya no funciona con el envío de la solicitud en la tienda de aplicaciones. No CommonCrypto
en mi proyecto en absoluto
También me enfrento a ese problema y hago mucha búsqueda y publico una pregunta en los foros de Apple y en varias plataformas sobre el uso de API no pública: la aplicación contiene uno o más archivos binarios dañados. Reconstruir la aplicación y volver a enviar
Después de conocer que para ese tipo de rechazo binario no válido no tienen una solución única. Menciono alguna posible solución que funciona para algún usuario recientemente.
- Actualice sus vainas de cacao si está en uso desde hace mucho tiempo y que contienen algún marco o clase swift desde swift 2.0, luego actualice sus vainas de cacao con soporte swift 4 y el objetivo 10.0 de que el error desaparezca.
- Uno de los usuarios que he hablado ha habilitado el código de bits desde la configuración de compilación y ese problema se soluciona.
- Algunos de los usuarios eliminan el código, la clase y el marco no utilizados que se usan directamente en el código sin el problema de cocoa-pods.
- Para mi me sale un aviso en el panel izquierdo como la siguiente imagen
- Una vez que la conversión a
swift4
obtengo la siguiente advertencia:
El uso de la inferencia Swift 3 @objc en el modo Swift 4 está en desuso. Dirija las advertencias de inferencia @objc en desuso, pruebe su código con el registro "Uso de inferencia Swobob 3 @objc desaprobado" habilitado, y luego deshabilite la inferencia cambiando la configuración de compilación "Inferencia Swob 3 @objc" a "Predeterminado" para "appname" objetivo.
Para corregir esta advertencia, utilizo esa respuesta: ¿ El uso de la inferencia Swift 3 @objc en el modo Swift 4 está en desuso?
Después de eso necesito agregar
@objc
en el método público de la claseswift3
que usé en mi clase deswift3
objective-c
usando bridgeTambién verifico otra advertencia en el panel del lado izquierdo, hay otra advertencia de dependencia del objetivo de la aplicación que también puede ser de ayuda para otra.
Espero que esta respuesta sea útil para algunos de los usuarios que aún no encuentran la respuesta y que podrían ser útiles.
Tenía el mismo problema desde el sábado. Tomó mucho tiempo de prueba y error en nuestro caso, activar Bitcode no funcionó. La siguiente parte de mi podfile
fue la razón:
post_install do |installer|
puts("Set deployment target")
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings[''IPHONEOS_DEPLOYMENT_TARGET''] = ''10.3''
end
end
end
Después de que quité este, se procesó sin error (aún con Bitcode desactivado). Realmente me desconcierta por qué establecer el objetivo de despliegue de repente causa un rechazo.
Utilicé soffes / CommonCrypto con Cartago. Eliminar el CommonCrypto.framework es un trabajo para mí, y por favor revise este enlace cómo importar el framework commoncryto: http://ioscake.com/importing-commoncrypto-in-a-swift-framework.html
Yo tuve el mismo problema. Estaba usando CommonCrypto como un marco ''falso''. Eliminé eso , y cambié al método descrito por la respuesta aceptada en este hilo , e iTunesConnect aceptó mi compilación.
Obtener una advertencia de conversión de Swift 4 por XCode o tener "CommonCryptoModule" en la salida de cmd cuando se usa la pod update
pods parece ser un indicador claro de si este problema lo afecta o no.