Uncategorized

Retomando Cableman (I – Android)

Hoy actualizando las apps de la tablet (una obsoleta Nexus 10, gracias Google), he visto que tenía instalada la app de CableMan para Android, y funcionaba. Eso significa que el despliegue en un dispositivo de verdad funciona, a diferencia del emulador de Android, donde se produce un error al ejecutar la aplicación.

EDIT.: He encontrado un pantallazo que demuestra que también funcionó en emulador en algún momento del pasado:

cableman

La situación actual es Visual Studio 15.7.3, la siguiente lista de paquetes:

Id Versions ProjectName 
-- -------- ----------- 
NETStandard.Library {2.0.3} CableMan.UWP 
UrhoSharp.Forms {1.8.93} CableMan.UWP 
Xamarin.Forms {3.0.0.482510} CableMan.UWP 
Microsoft.NETCore.Platforms {2.0.2} CableMan.iOS 
NETStandard.Library {2.0.3} CableMan.iOS 
UrhoSharp.Forms {1.8.93} CableMan.iOS 
Xamarin.Forms {3.0.0.482510} CableMan.iOS 
Microsoft.NETCore.Platforms {2.0.2} CableMan.Android 
NETStandard.Library {2.0.3} CableMan.Android 
UrhoSharp.Forms {1.8.93} CableMan.Android 
Xamarin.Android.Arch.Core.Common {1.0.0} CableMan.Android 
Xamarin.Android.Arch.Lifecycle.C... {1.0.3} CableMan.Android 
Xamarin.Android.Arch.Lifecycle.R... {1.0.3} CableMan.Android 
Xamarin.Android.Support.Animated... {27.0.2} CableMan.Android 
Xamarin.Android.Support.Annotations {27.0.2} CableMan.Android 
Xamarin.Android.Support.Compat {27.0.2} CableMan.Android 
Xamarin.Android.Support.Core.UI {27.0.2} CableMan.Android 
Xamarin.Android.Support.Core.Utils {27.0.2} CableMan.Android 
Xamarin.Android.Support.Design {27.0.2} CableMan.Android 
Xamarin.Android.Support.Fragment {27.0.2} CableMan.Android 
Xamarin.Android.Support.Media.Co... {27.0.2} CableMan.Android 
Xamarin.Android.Support.Transition {27.0.2} CableMan.Android 
Xamarin.Android.Support.v4 {27.0.2} CableMan.Android 
Xamarin.Android.Support.v7.AppCo... {27.0.2} CableMan.Android 
Xamarin.Android.Support.v7.CardView {27.0.2} CableMan.Android 
Xamarin.Android.Support.v7.Media... {27.0.2} CableMan.Android 
Xamarin.Android.Support.v7.Palette {27.0.2} CableMan.Android 
Xamarin.Android.Support.v7.Recyc... {27.0.2} CableMan.Android 
Xamarin.Android.Support.Vector.D... {27.0.2} CableMan.Android 
Xamarin.Forms {3.0.0.482510} CableMan.Android

Otros datos de configuración son: Java 1.8.0_172 y una imagen de Android x86 API 27 (Oreo 8.1).

Veamos si se puede actualizar algo para cambiar el comportamiento u obtener un mensaje de error más claro. En la consola de NuGet aparecen 21 actualizaciones, así que adelante con todas. Hizo falta reiniciar Visual Studio para actualizar algunos paquetes, algo que nunca deja de asombrarme por lo cutre que resulta. Después del reinicio, la lista de paquetes es esta:

Id Versions ProjectName 
-- -------- ----------- 
NETStandard.Library {2.0.3} CableMan.UWP 
UrhoSharp.Forms {1.8.93} CableMan.UWP 
Xamarin.Forms {3.0.0.561731} CableMan.UWP 
Microsoft.NETCore.Platforms {2.1.0} CableMan.iOS 
NETStandard.Library {2.0.3} CableMan.iOS 
UrhoSharp.Forms {1.8.93} CableMan.iOS 
Xamarin.Forms {3.0.0.561731} CableMan.iOS 
Microsoft.NETCore.Platforms {2.1.0} CableMan.Android 
NETStandard.Library {2.0.3} CableMan.Android 
UrhoSharp.Forms {1.8.93} CableMan.Android 
Xamarin.Android.Arch.Core.Common {1.0.0.1} CableMan.Android 
Xamarin.Android.Arch.Lifecycle.C... {1.0.3.1} CableMan.Android 
Xamarin.Android.Arch.Lifecycle.R... {1.0.3.1} CableMan.Android 
Xamarin.Android.Support.Animated... {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Annotations {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Compat {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Core.UI {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Core.Utils {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Design {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Fragment {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Media.Co... {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Transition {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.v4 {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.v7.AppCo... {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.v7.CardView {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.v7.Media... {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.v7.Palette {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.v7.Recyc... {27.0.2.1} CableMan.Android 
Xamarin.Android.Support.Vector.D... {27.0.2.1} CableMan.Android 
Xamarin.Forms {3.0.0.561731} CableMan.Android

Todavía había un aviso en el panel del Package Manager avisando que había paquetes pendientes de desinstalar y que si reiniciaba Visual Studio otra vez. Me resistí a esos cantos de sirena y miré si había actualizaciones del SDK de Android o de las imágenes para el emulador. No era el caso, otra de las piezas de configuración era Android SDK Platform API 27 v3.

Compilando y desplegando de nuevo la aplicación volvió a morir sin errores. Para el próximo artículo:

  • Intentar resolver el error de conexión a logcat: Android application is debugging.
    Couldn’t connect to logcat, GetProcessId returned: 0
  • Desplegar de nuevo a dispositivo físico Android para saber si es un escenario que todavía funciona.
  • Probar la versión UWP.
Anuncios

Retomando Herschel Quick Look (WinObjC)

El estado de este proyecto es el más frustrante de todos, ya que cuando la runtime de WinObjC se distribuía como un binario comprimido, llegó a ejecutar e incluso funcionar como UWP. Desde que se distribuye como un paquete (principios de 2017 según el registro de cambios del README.md en GitHub) nunca ha llegado a funcionar y sólo muestra una pantalla en blanco si hay mucha suerte.

Una de estas veces que fui a continuar trabajando en este proyecto me encontré el siguiente error al cargar el proyecto principal:

C:\Users\teles\OneDrive\Prog\Herschel Quick Look Modern\Herschel Quick Look\Herschel Quick Look.vsimporter\Herschel Quick Look-WinStore10\Herschel Quick Look.vcxproj : error : Cannot load project with duplicated project items: ..\..\Herschel_Quick_Look_Prefix.pch is included as 'ClInclude' and as 'ClInclude' item types.

Para resolver este problema hay que:

Editar el fichero vcxproj del proyecto principal. Comentar la línea:

<!--ClInclude Include="..\..\Herschel_Quick_Look_Prefix.pch" /-->

Y recargar el proyecto. El error habrá desaparecido por completo.

También, mucho cuidado al usar WinObjC (que depende de Clang por detrás) con el código en una carpeta compartida de OneDrive. Al recompilar la solución, aparecerán un gran número de errores de este tipo:

Severity Code Description Project File Line Suppression State
Error no such file or directory: 'C:\Users\teles\OneDrive\Prog\Herschel Quick Look Modern\Herschel Quick Look\Classes\qv\archive\xmlparser\HsaXmlHandler.m' Herschel Quick Look (Herschel Quick Look\Herschel Quick Look) C:\Users\teles\OneDrive\Prog\Herschel Quick Look Modern\Herschel Quick Look\Herschel Quick Look.vsimporter\Herschel Quick Look-WinStore10\clang.exe 1 
Error no input files Herschel Quick Look (Herschel Quick Look\Herschel Quick Look) C:\Users\teles\OneDrive\Prog\Herschel Quick Look Modern\Herschel Quick Look\Herschel Quick Look.vsimporter\Herschel Quick Look-WinStore10\clang.exe 1

No sé si es un error o una feature de Clang, pero desde luego falla todo el proceso de compilación. Con el mismo código copiado a una carpeta local, estos errores desaparecen.