Colaborar / Estructurar un proyecto Phonegap a gran escala

Mi amigo y yo planeamos comenzar un proyecto de Phonegap mobile, que cubrirá iOS, Android y Windows Phone. Se requerirá acceso a algunas funciones nativas como el teléfono con camera. También tendrá que hacer algunas llamadas al server XHR, lo que se hace en CakePHP.

Ahora me pregunto cómo se estructura normalmente un proyecto así en Phonegap / y qué cometer Git.

Aquí hay algo que estoy considerando:

1) Necesitaremos un repo para las cosas del lado del server porque es relativamente universal.

2) ¿Deberíamos mantener todas las aplicaciones mobilees en sus repositorys Git separados? (entonces 1 para iOS, 1 para Android, 1 para Window Phone). Este enfoque deberá mantener 3 carpetas separadas de www, cada una de las cuales consistirá de muchos files html.

3) Compacte todo en un repository de Git gigante con un documento HTML de una página solamente index.html. Todo lo demás será manejado por javascript y funciones relacionadas con el dispositivo. (Aunque todavía no sé cómo manejar la transición de página, navigation, button de retroceso en este enfoque, aún estoy aprendiendo)

Realmente admiro este proyecto de Wikimedia hecho en Phonegap: https://github.com/wikimedia/WikipediaMobile . Mantienen todo en un repository gigante y una carpeta www universal con files js separados relacionados con el dispositivo (como mi enfoque 3). Aunque es un poco complicado para mí rastrear cómo han hecho su. Si usted sabe de un estudio de caso desglosado sobre WikipediaMobile, hágamelo saber.

El enfoque que recomiendo sería tener todo en un repository pero descomponerlo en una estructura de carpetas como:

- android [eclipse_project] - ios [xcode_project] - windows [vs_project] - www 

Cada carpeta específica de la plataforma contiene el proyecto nativo para cada plataforma (es decir, su proyecto Xcode se encuentra en la carpeta iOS , su proyecto Eclipse se encuentra en la carpeta Android ) pero la aplicación HTML / JS real se almacena en la carpeta www .

En mi opinión, la aplicación web que construyas en un proyecto PhoneGap debería ser completamente independiente de la plataforma, por lo que solo debería haber una sola versión. Dado que los browseres de Android / iOS / Windows están bastante bien estandarizados, esto no debería ser un gran problema, así que no veo por qué serían necesarios los files JS por separado. En cualquier caso, si necesita un comportamiento diferente por dispositivo, podría identificar los dispositivos y luego manejarlo a nivel de JavaScript / CSS.

Como @ F481 insinúa, si usas o no PhoneGap Build hará una gran diferencia. Si usa la compilation de PhoneGap, no necesitará proyectos nativos (lo cual es genial si no está familiarizado con los IDEs nativos) por lo que solo necesitará una sola carpeta para la aplicación web. ¡Te recomiendo que eches un vistazo!

¡Espero que esto responda a sus preguntas!