Uncategorized

Retomar antiguos proyectos software “caseros”

Suele ser muy complicado por dos razones. O bien las dependencias han desaparecido (a veces ocurre en Maven), o bien algunos IDE como Visual Studio tienen demasiada influencia en la gestión de configuración del proyecto y una actualización del IDE te deja el proyecto en un estado inconsistente. Ojo que esto no sólo pasa en VS, sino que Android Studio a través de Gradle hace lo mismo. Una actualización de Android Studio fuerza a actualizar Gradle que aplica nuevas reglas y el proyecto ya no compila sin haber cambiado ni una sola versión de las dependencias.

Voy a listar el estado actual los proyectos caseros en los que estoy trabajando e iré escribiendo futuros posts sobre cómo hice para resolver todos los problemas que me he ido encontrando.

First (mi antiguo TFC):

Este lo tengo reciente. Hoy mismo he instalado NetBeans 9.0 Beta y he intentado compilar mediante Maven el código del proyecto, que llegaba a ejecutar en NetBeans 8.2, recién desinstalado.

  • Error: Un paquete perteneciente a Image I/O (para manejar ficheros TIFF) ya no está en ninguno de los repositorios configurados de Maven.
  • Causa: Borrar el antiguo repositorio (C:\usuario\.netbeans o quizá C:\usuario\.m2, ya investigaré) con las dependencias descargadas de los repositorios de Maven.
  • Plan de acción: Usar referencias locales para todas las bibliotecas que falten.

Cableman (una aplicación de Xamarin Forms y UrhoSharp):

El mayor problema es que no recuerdo el estado anterior (es posible que sólo funcionase en un dispositivo real Android y en Windows UWP). Pero no hay framework más acoplado que Xamarin a las versiones de Visual Studio. Tras dos actualizaciones de versión (de 15.5 a 15.7), ya no funciona en Android (emulador) ni en Windows UWP.

  • Error: En Android da un error de runtime porque las rutas de Assets están mal. En UWP la actualización de Visual Studio ha introducido una dependencia de .NET  Standard, incompatible con la estrategia actual de compartición de código, que es mediante proyecto compartido, valga la redundancia.
  • Causa: Desconocida, updates de Xamarin o Visual Studio.
  • Plan de acción: El plan de acción de actualizar la estrategia de compartición de código de proyecto compartido a .NET Standard no ha tenido éxito porque UrhoSharp no funciona cuando se comparte el código de la lógica por .NET Standard.

Dark Influence (otra aplicación de Xamarin Forms):

Esta aplicación, sencillísima, funcionaba correctamente en Windows, Windows 10 Mobile, Android e iOS. De momento es un botón que hace un random en un array, aunque hay bastante lógica ya escrita y compartida mediante (otra vez) un proyecto compartido.

  • Error: Esto provoca errores en los proyectos específicos de plataforma porque Xamarin Forms aparentemente ha introducido una dependencia de .NET Standard.
  • Causa: Desconocida, updates de Xamarin o Visual Studio.
  • Plan de acción: Migrar a .NET Standard, ya que este proyecto no usa UrhoSharp.

Herschel Quick Look (un port de la versión de iOS a UWP usando WinObjC)

Todo compila bien, pero los XIB con delegates aparentemente no los soporta la herramienta de WinObjC xib2nib.

  • Error: Pantalla principal de la aplicación en blanco, con muchos nodos del XIB apareciendo como unhandled en la ejecución de xib2nib.
  • Causa: Desconocida por el momento. Quizá el delegate que se encarga de pintar la pantalla.
  • Plan de acción: Utilizando la herramienta nib2objc que convierte los ficheros de interfaz de XCode a ficheros de código en Objective C, tengo un fichero .m equivalente para la pantalla principal. No tengo muy claro cómo integrar ese fichero con el delegate que pinta todo lo demás.

 

Suelen decir que explicar un problema te ayuda a entenderlo, así que vamos a intentar entender todas estas cosas por aquí próximamente.

Anuncios

Nuevo diseño para el blog (en pruebas)

Le he cambiado el diseño al blog, porque estaba un poco harto de tanta oscuridad, de la imagen de fondo y que no fluyera el texto demasiado bien. Seguramente experimente un poco con los colores, la imagen de cabecera y la anchura de la zona de contenido (si WordPress no me cobra por ello) cuando tenga otro rato.