La estrategia de Dropbox para dar soporte a iOS y Android
Mantener una misma aplicación en múltiples plataformas mediante un desarrollo nativo tienen la desventaja de prácticamente duplicar el coste de mantenimiento, tener que arreglar los mismos bugs una vez por plataforma, la posibilidad de introducir bugs que sean específicos para una plataforma y por tanto más difíciles de identificar, y la necesidad de optimizar la aplicación para cada plataforma, entre otros inconvenientes.
La solución que Dropbox ha adoptado para resolver estos problemas en sus desarrollos para iOs y Android es un tanto curiosa; quizás podrías pensar inicialmente que se habrán ido por una solución del estilo de Apache Cordova. Sin embargo han hecho justo lo contrario: en vez de ir a alguna solución de más alto nivel, han implementado una capa en C++ que contiene los algoritmos "core" para todo el funcionamiento de Dropbox.
Dentro de esta capa tienen una instancia de la base de datos SQLite que es la que en cada momento indica qué es lo que hay que sincronizar, y un servicio responsable de llevar a cabo estas actualizaciones contra los servidores de Dropbox. También cuenta con una cola de operaciones que tienen que ser realizadas, y un thread que va extrayendo operaciones de esa cola y las va ejecutando.