Quiero mantener mi aplicación por debajo de 10.0MB para descargarla fácilmente en entornos de red móvil y Wifi. En su experiencia, ¿ha encontrado alguna buena manera de mantener sus aplicaciones delgadas? Si es así, por favor comparte. ¿Cuáles son algunas buenas pautas para mantener el tamaño del archivo de la aplicación de iPhone por debajo de 10.0MB?¿Cuáles son algunas buenas pautas para mantener el tamaño del archivo de la aplicación de iPhone por debajo de 10.0MB?
Respuesta
La mayoría de las aplicaciones que he tratado que superan los 10M se deben a recursos, a menudo imágenes y audio. Ajustarlos correctamente es fundamental. Tenga en cuenta que el iPhone hace algo de compresión automáticamente cuando se empaqueta para el dispositivo, por lo que el tamaño de las cosas en Simulator puede ser radicalmente diferente al del dispositivo.
Como todos los ejercicios de optimización, primero debe construir un sistema sólido y sano y luego enfocar sus esfuerzos de optimización en las piezas que están causando los problemas más importantes. Yo uso du
para esto:
- Construir para el dispositivo de lanzamiento
- Ir a construir/liberación iPhoneOS/.app
du -ak | sort -rn | head
Esto le dará una lista de donde el las mejores cosas son Esta información está en kB, pero se redondea al siguiente bloque (4k en Mac). Pero solo estás buscando lo que es grande, sin calcular el tamaño exacto de todo.
Mire especialmente las cosas que se copian en sus Recursos que no deberían ser. A veces, entran cosas divertidas, especialmente documentación que has agregado al proyecto. Probando esto, noto que mi propia plantilla de proyecto ha estado copiando archivos xcconfig en el paquete (tengo que arreglar eso ...)
Si tiene muchos NIB localizados, entonces puede considerar no localizar los NIB, y más bien usando IBOutlet UILabels. No localice un NIB si no hay texto localizado real. El hecho de que localice un NIB no significa que tenga que localizarlos a todos.
En general, las configuraciones de compilación para iPhone ya son agresivas para bajar el tamaño, así que no me meteré con eso mucho sin investigar lo que está cambiando.
Ten cuidado con las clases Objective-C con muchos métodos que nunca llamas. Objective-C es dinámico, por lo que no se puede eliminar el código muerto como en C. No hay forma de saber en tiempo de compilación si un selector se puede usar en tiempo de ejecución. Entonces, si tiene objetos que tienen el fregadero en la cocina "por las dudas", es posible que desee quitarlos. Pero, en general, no estamos hablando de mucho espacio aquí en comparación con un solo archivo de audio. Solo lo menciono para el raro caso donde tienes un objeto realmente grande que solo puedes vincular para algún método de clase o constante o similar.
Un consejo sería utilizar formatos de medios comprimidos. P.ej. Si está utilizando archivos de audio, podría considerar usar mp3 en lugar de AIFF o WAV, al precio posible de una sobrecarga de procesamiento ligeramente superior. Un ejecutable de 10 MB suena inusualmente alto, por lo que una aplicación tan grande podría contener una gran cantidad de contenido multimedia (imágenes, audio).
Otro consejo: Be careful with your 9.9MB app!
Después de muchas optimizaciones, no querrá descubrir que su aplicación parece tener 10.1MB.
El proceso de compilación comprime automáticamente los archivos PNG (utilizando pngcrush, no lo hagas), por lo que en realidad tendrías que tener muchos recursos para obtener más de 10 MB de tamaño.Creo que preocuparse por esto es una optimización prematura y probablemente no necesites preocuparte hasta que te encuentres más cerca.
Convierta algunas de sus imágenes más grandes en escala de grises si funciona con el aspecto de su aplicación. Si puede hacer unos pocos en escala de grises pura, el ahorro es bastante sustancial.
Esta Tipos su mayoría se aplicará a los juegos de iPhone:
- Use JPG en lugar de PNG para las imágenes que no tienen transparencia.
- Ten tus sonidos en mp3, render en WAV la primera vez que se carga la aplicación y guárdalos en la aplicación Dir de documentos.
- 1. Imprimir objetos y unicode, ¿qué hay debajo del capó? ¿Cuáles son las buenas pautas?
- 2. ¿Cuáles son algunas buenas pautas de usabilidad que un desarrollador promedio debería seguir?
- 3. ¿Cuáles son algunas buenas maneras de hacer el bloqueo intermachine?
- 4. ¿Cuáles son algunas buenas soluciones de ORM de Python?
- 5. ¿Cuáles son algunas buenas técnicas para registrar sus aplicaciones?
- 6. ¿Cuáles son algunas buenas formas de distribuir un archivo común de hormigas para incluir en compilaciones?
- 7. ¿Cuáles son algunas buenas alternativas de Entity Framework?
- 8. ¿Cuáles son algunas buenas revistas de Informática/Programación?
- 9. ¿Cuáles son algunas buenas herramientas gratuitas de HttpDebugging?
- 10. ¿Cuáles son algunas buenas técnicas para convertir una aplicación de Ms Access a .Net Application?
- 11. ¿Cuáles son algunos de los elementos del documento de buenas especificaciones/requisitos para un proyecto de aplicación de iPhone pequeño?
- 12. ¿Cuáles son buenas maneras de monitorear el estado del servidor?
- 13. ¿Cuáles son algunas herramientas de cobertura de código para Perl?
- 14. ¿Cuáles son algunas buenas guías para principiantes para el desarrollo web con frameworks (particularmente Django)?
- 15. ¿Cuáles son algunas buenas y rápidas opciones de almacenamiento persistentes para los datos clave-> valor?
- 16. ¿Cuáles son algunas buenas herramientas de análisis de lenguaje natural para Perl?
- 17. ¿Cuáles son algunas buenas soluciones de programador y corredor de trabajo .net?
- 18. ¿Cuáles son algunas buenas maneras de implementar la eliminación de llamadas finales?
- 19. ¿Cuáles son algunas buenas formas de estimar la similitud semántica "aproximada" entre oraciones?
- 20. ¿Cuáles son algunas de las mejores prácticas para mantener múltiples versiones de un proyecto?
- 21. ¿Cuáles son las cosas buenas de baba?
- 22. ¿Cuáles son algunas de las mejores preguntas de iPhone para hacer ejercicio?
- 23. ¿Cuáles son buenas fuentes para la metaprogramación en SQL?
- 24. ¿Cuáles son algunas buenas soluciones de autorizaciones de roles que se usan con Authlogic?
- 25. ¿Cuáles son las pautas para Parallel.ForEach vs. foreach?
- 26. ¿Cuáles son algunas de las alternativas del pagerank?
- 27. ¿Cuáles son algunas características interesantes del código fuente de EveryBlock.com?
- 28. ¿Cuáles son algunas buenas estrategias para permitir que las aplicaciones implementadas sean corregibles?
- 29. ¿Cuáles son algunas aplicaciones destacadas del mundo real de Java?
- 30. ¿Cuáles son algunas características útiles de TextMate?