Las compilaciones / implementaciones de Xamarin.Android son muy lentas. ¿Cómo acelerarlos?
Tenemos un gran proyecto Xamarin.Android con dos proyectos dependientes y un montón de dll de terceros. Hacer una implementación de depuración (sin cambios) en un emulador Hax-x86 o en un dispositivo Nexus 5 es dolorosamente lento (> 80 segundos). Para comparación, la versión Xamarin.iOS de la aplicación se despliega en menos de siete segundos en un dispositivo real.
Para probar los tiempos de implementación, también he creado un nuevo proyecto Xamarin.Android que se despliega en unos cuatro segundos. Cuando agrego un proyecto dependiente, el tiempo de despliegue aumenta hasta siete segundos. Cuando agrego un archivo de diseño al proyecto dependiente el tiempo de despliegue aumenta a unos diez segundos.
- MonoDroid: Controlador de errores global
- Xamarin.Forms popup "Nueva Versión Disponible"
- Actualización de Xamarin hace que "el archivo de clase tenga versión incorrecta 52.0, debe ser 50.0" error
- Monodroid poniendo objetos parcelables en un paquete
- MVVMCross Obtener SelectedItem de un MvxBindableListView
¿Es posible acelerar la compilación y el despliegue de Android con Xamarin Studio? Un gran Eclipse Android Proyectos se despliega bastante rápido en comparación.
Actualizar:
Simplemente ejecutando el paso de construcción de la instalación se tarda unos 40 segundos:
time xbuild /t:Install BigApp.csproj ... ... ... Time Elapsed 00:00:42.8526970
alrededor de la mitad del tiempo se gasta donde el comando anterior se imprime a la consola:
Target _CompileDex: JavaSourceFiles: JavaLibraries: ExternalJavaLibraries: Tool /usr//bin/java execution started with arguments: -Xmx512M -jar /Users/myname/Library/Developer/Xamarin/android-sdk-mac_x86/build-tools/17.0.0//lib/dx.jar --no-strict --dex --output=obj/Debug/android/bin/classes.dex obj/Debug/android/bin/classes /Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/mandroid/platforms/android-15/mono.android.jar /Users/myname/Projects/BigApp/obj/Debug/__library_projects__/TestFlightBindings.Jars.TestFlightLib_1_2.jar /Users/myname/Projects/BigApp/obj/Debug/__library_projects__/android-support-v4.jar /Users/myname/Projects/BigApp/obj/Debug/__library_projects__/classes.jar /Users/myname/Library/Developer/Xamarin/android-sdk-mac_x86/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
Cuando ejecuto la solución de Xamarin Studio este paso sucede dos veces. Una vez para el proyecto dependiente y otra para el proyecto principal. He intentado reproducir este comportamiento en la consola con
"/Applications/Xamarin Studio.app/Contents/MacOS/mdtool" -v build "--configuration:Debug -t Install" "BigApp.sln"
pero que solo construye el proyecto principal.
Actualizar:
He creado un pequeño proyecto de demostración con un tiempo de implementación muy lento: https://github.com/perpetual-mobile/SlowAndroidDeploymentWithXamarin
- Obtener la actividad actual de Application.Context - MonoAndroid
- cómo implementar el proyecto androide xamarin a Xamarin Android Player en VS 2015
- NullReferenceException en la puesta en marcha de la aplicación Xamarin Droid
- Cómo implementar CountDownTimer Clase en Xamarin C # Android?
- OnGlobalLayoutListener en Mono para Android
- Añadir elevación / sombra en la barra de herramientas para dispositivos pre-lollipop
- ¿Cómo generar Xamarin vinculante para AAR con muchas dependencias?
- ¿MonoDroid vale la pena el esfuerzo?
Me puse en contacto con los chicos de Xamarin sobre este problema y arreglaron dos problemas en Xamarin.Android:
- https://bugzilla.xamarin.com/show_bug.cgi?id=16622 (siempre desde Xamarin Android 4.12.0 )
- https://bugzilla.xamarin.com/show_bug.cgi?id=15162 (siempre desde Xamarin Android 4.10.0 )
El tiempo de construcción de mi gran proyecto sin ningún cambio es ahora de ~ 5 segundos. Y al hacer un cambio de código en el lib dependiente más profundo un ciclo de implementación no toma más de 16 segundos.