He estado exactamente donde está.
Un truco es que, incluso si va a haber condiciones en el código, no encienda las versiones de Symbian. Hace que sea difícil agregar soporte para nuevas versiones en el futuro, o personalizar para teléfonos que son inusuales de alguna manera. En su lugar, identificar cuáles son las propiedades reales son que usted está confiando en, escribir el código en torno a ellos, y luego se incluyen un archivo de cabecera que hace:
#if S60_3rd_ED
#define CAF_AGENT 1
#define HTTP_FILE_UPLOAD 1
#elif S60_2nd_ED
#define CAF_AGENT 0
#if S60_2nd_ED_FP2
#define HTTP_FILE_UPLOAD 1
#else
#define HTTP_FILE_UPLOAD 0
#endif
#endif
y así sucesivamente.Obviamente, puede agrupar las características por característica en lugar de por versión, si lo prefiere, tener encabezados completamente diferentes por configuración o cualquier esquema que le convenga.
Tuvimos definiciones para las clases de IU heredadas, también, de modo que había algún código de UI en común entre S60 y UIQ. De hecho, debido a lo que era el producto, no teníamos mucho código relacionado con la interfaz de usuario, por lo que una proporción decente era común.
Como dicen otros, es incluso mejor agrupar el comportamiento variable en clases y funciones cuando sea posible, y vincular diferentes versiones.
[Editar en respuesta al comentario:
Nos trataron muy difícil de evitar hacer cualquier cosa depende de la resolución - afortunadamente la aplicación particular, no hizo esto demasiado difícil, por lo que nuestra interfaz de usuario limitada era bastante genérico. Lo principal en que cambiamos la resolución de la pantalla era para las imágenes de fondo/salpicaduras y cosas por el estilo. Tuvimos un script para preprocesar los archivos de compilación, que sustituyeron el ancho y alto en un nombre de archivo, splash_240x320.bmp o lo que sea. De hecho, generamos a mano las imágenes, ya que no había muchos tamaños diferentes y las imágenes no cambiaban a menudo. El mismo script generó un archivo .h que contiene #defines de la mayoría de los valores utilizados en la generación del archivo de compilación.
Esto es para compilaciones por dispositivo: también teníamos más archivos SIS genéricos que cambiaban el tamaño de las imágenes sobre la marcha, pero a menudo teníamos requisitos sobre el tamaño instalado (ROM a veces era bastante limitado, lo cual importa si su aplicación es parte de la imagen del dispositivo base), y cambiar el tamaño de las imágenes fue una forma de mantenerlo un poco abajo. Para admitir la rotación de la pantalla en N92, Z8, etc., seguimos necesitando versiones verticales y horizontales de algunas imágenes, ya que la relación de aspecto volteada no da tan buenos resultados como cambiar el tamaño a la misma relación o similar ...]
Oye, ¿podría decirme también su enfoque para manejar diferentes resoluciones de pantalla móvil? – ardsrk