Resolver “The application could not be started. Ensure that the application has been installed to the target device and has a launchable activity (MainLauncher = true).” en Xamarin

Recientemente me encontraba trabajando en un proyecto de Xamarin.Forms en el cual seguía este modelo de ramificación en git. Si bien git es una excelente herramienta de colaboración cuando trabajas en un equipo de desarrollo, las cosas pueden tornarse un poco feas si no hay un debido control y sobretodo disciplina al hacer commits; al ser un sistema de control de versiones descentralizado, se evita que el código fuente pierda su calidad, siempre y cuando se maneje con responsabilidad.

onedoesnotsimply_git

Dicho esto, git pasa de una excelente herramienta de colaboración, a una herramienta de respaldo cuando se trabaja en un equipo de una sola persona (yo). Como no hay trabajo paralelo, básicamente lo que hacía era crear ramas por cada requerimiento principal y programaba las funciones de una por una, luego me pasaba a otra rama y así sucesivamente.

Terminando precisamente la primera rama y una vez que las pruebas de UI pasaron correctamente, decidí entrarle al siguiente requerimiento; creas la rama correspondiente, commit inicial, agregas los archivos necesarios, commits aquí y allá, compilas correctamente, deployment y… oh oh…

The application could not be started. Ensure that the application has been installed to the target device and has a launchable activity (MainLauncher = true).

Additionally, check Build->Configuration Manager to ensure this project is set to Deploy for this configuration.

Ya antes había tenido problemas con versiones de anteriores aplicaciones instaladas en el emulador/dispositivo, lo cual resolvía desinstalándolas y volviendo a instalarlas y todo quedaba listo, pero en este caso particular, ni volteando a San Tadeo. Lo curioso es que al hacer checkout a la rama anterior, todo funcionaba perfecto, pero una vez cambiaba a la actual y compilaba correctamente pero nada de nada en el emulador/dispositivo.

Lo primero que pensé es que posiblemente algunos archivos se habían quedado “colgados” en el directorio donde se generan al momento de compilar el proyecto, pero buscando algún conflicto no encontré absolutamente nada que estuviera fuera de lugar, así que ni limpiando y recompilando se ejecutaba la aplicación.

¿La solución?, trasteando un poco con el proyecto .Droid, bastó simplemente con cambiar el nombre de la aplicación en AndroidManifest.xml a uno diferente, compilar y depurar para posteriormente cambiarlo al nombre original y listo, el proyecto quedó funcional de nuevo, sin necesidad de hacer malabares con git y seguir con las buenas prácticas a pesar de tener la tentación de dejarlas 😉 .

ejemplo1