2011-03-16 18 views
6

¿Hay alguna manera fácil de que Three20 v1.1 funcione bajo xCode 4? Seguí los pasos en http://three20.info/article/2011-03-10-Xcode4-Support pero eso parece ser para el maestro. Uso v1.1 cuando uso TTLauncher.Three20 v1.1 y Xcode 4

El proyecto se compila bien con una compilación normal y funciona perfectamente en un iPhone. Pero cuando quiero crear el archivo (para la distribución de IPA) obtengo 18 errores y 8 advertencias.

La primera es:

../scripts/Protect.command: line 23: cd: /Users/XXX/Library/Developer/Xcode/DerivedData/iDoms-cmyivarwxpbvqdfnyclqdrikrtmw/ArchiveIntermediates/iDoms/BuildProductsPath/Release-iphoneos/../three20/Three20UICommon: No such file or directory 

La mayoría de los otros son 'no existe el fichero o directorio' sobre, por ejemplo: #import "Three20Core/TTGlobalCoreLocale.h "

o 'no declarado (primer uso de la función)', que proviene de la 'ningún archivo o directorio, tema presumo'

En mis 'Header' caminos de búsqueda que tengo:.

$(BUILT_PRODUCTS_DIR)/../three20 
$(BUILT_PRODUCTS_DIR)/../../three20 
../../three20/Build/Products/three20 
/usr/include/libxml2 

¡Cualquier ayuda sería muy apreciada!

Respuesta

3

Deberías echar un vistazo a this StackOverflow question.

he reproducido la respuesta aceptada a continuación:

Así que parece que la manera más fácil de conseguir viejos Xcode 3.2 proyectos para trabajar con Xcode 4 es hacer lo siguiente:

Go en las preferencias de Xcode 4 (Cmd +,). Seleccione la pestaña "Ubicaciones". Donde dice "Construir ubicaciones", seleccione la caída hacia abajo y seleccione "Lugar construir productos en los lugares especificados por objetivos" Voy a escribir un artículo three20.info entrar en más detalles acerca de este .

+0

Lo intenté, y eso parece reducir la cantidad de errores de más de 100 a 18. Voy a echar un vistazo a la mención de cambios de código en las otras respuestas en la publicación referenciada mañana y ver si eso hace un cambio al código v1.1. –

+0

Terminé recreando todo el proyecto en Xcode 4 ya que con todos mis intentos para que funcione, Xcode se bloqueó cada vez que abrí el proyecto. ¡Ahora uso la versión 1.0.5 y creo mi propio TTLaunchViewController y funciona perfecto! –

+0

Prefiero mantener todos los productos de compilación en una ubicación derivada (también es el enfoque recomendado de Apple). Hasta ahora no he tenido suerte con esa opción.Intenté usar SRCROOT en lugar de BUILD_PRODUCTS_DIR, pero sospecho que tampoco es correcto. (Todavía estoy tratando de encontrar dónde está colocando los tres encabezados combinados. ¡No parece estar bajo CUALQUIERA de esos!) –

1

Añadir estos dos caminos para sus rutas de búsqueda de cabecera en los valores de creación para su objetivo:

"$ (BUILD_DIR)/Three20" "$ (BUILD_DIR) /../ Three20"

La primera entrada es necesaria para compilaciones regulares y la segunda entrada es necesaria para los archivos.

Es así de fácil.


Por cierto, para crear un archivo en el directorio de inicio con una lista de todas las variables de entorno de Xcode para environement de su destino, agregue la siguiente fase de construcción Ejecutar script a su objetivo con contenidos: ENV> ~/xcode-environment.sh

Tenga en cuenta que en este caso, si su proyecto no está pasando por la fase de compilación del proceso de compilación, y su script de ejecución aparece más tarde, el script no se ejecutará, así que colóquelo primero .

10

Sólo para añadir a la respuesta de Colin: se puede usar proyectos dependientes de Xcode característica para utilizar Three20, aunque el sitio web Three20 dice que no es "apoyo oficial":

  1. En el espacio de trabajo, haga clic en el espacio vacío en su navegador de proyectos. Seleccione "Añadir archivos a 'Mi área de trabajo', y seleccione el proyecto Three20 (three20/src/Three20/Three20.xcodeproj) Este es el proyecto única es necesario agregar:. No es necesario añadir manualmente los subproyectos Three20

  2. seleccione su proyecto. en el navegador, vaya a construir Fases, abra "Enlace binario con las bibliotecas", haga clic en el signo "+" en la esquina inferior izquierda, y añadir las bibliotecas Three20:. libThree20.a, libThree20Core.a, libThree20Network.a, libThree20Style.a, libThree20UI.a, libThree20UICommon.a y libThree20Navigator.a Este hará que Xcode construya Three20 cuando construya su proyecto.

  3. Agregue ${BUILD_DIR}/three20 a su ruta de inclusión según la respuesta de Colin: vaya a las configuraciones de construcción, haga doble clic en "Rutas de búsqueda de encabezado" y agregue ${BUILD_DIR}/three20 (se mostrará como build/three20 al cerrar el cuadro de diálogo).

  4. Agregue three20/src/Three20.bundle a sus recursos.

  5. Probablemente también sea una buena idea agregar las banderas del enlazador -ObjC y -all_load si aún no lo ha hecho (el mismo cuadro de diálogo, estableciendo "Otras banderas del enlazador").

Los pasos anteriores son suficientes para compilar el código. Para hacer "Archivo" trabajo también, tendrá que:

  1. Añadir $(BUILT_PRODUCTS_DIR)/../three20 y $(BUILT_PRODUCTS_DIR)/../../three20 a la configuración de rutas de búsqueda de cabecera. Si no lo hace obtendrá errores de compilación que los tres encabezados no se pueden encontrar.

  2. todos Tres proyectos (no solo el proyecto de nivel superior), vaya a Configuraciones de compilación y establezca "Omitir instalación" en SÍ. Si no lo hace, el proyecto se compilará, pero no podrá crear un IPA.

Asegúrese de que el nombre del producto (seleccione su objetivo, ir a la configuración de creación a continuación, establecer "Nombre") no contiene espacios, de lo contrario el archivo no funcionará.

Por último, si usted está recibiendo errores como ld: library not found for -lThree20 y está utilizando una configuración de generación personalizada (como AdHoc), asegúrese de añadir la misma configuración de generación de cada uno de los proyectos Three20 también (solo duplicar el lanzamiento configuración).

+0

Esto funcionó para mí, ¡gracias! – UltimateBrent

+0

Esto también funcionó para mí. ¡Gracias! – livingtech

+0

Esto funcionó para mí cuando nada más lo haría. Muchas gracias! –