Eseguire su un diverso sistema operativo un’applicazione che nasce per un’altra piattaforma, non è propriamente una passeggiata. Per avviare le applicazioni su una piattaforma diversa da quella nativa si possono usare diverse soluzioni: virtualizzazione, emulazione, containerizzazione, layer di compatibilità e, in alcuni casi, ambienti di esecuzione intermedi. Portare i programmi Windows su Android può rivelarsi utile in molteplici situazioni.
Innanzi tutto, si ha la possibilità di eseguire applicazioni Windows su una piattaforma diffusissima come Android senza la necessità di installare l’intero sistema operativo Microsoft. Eseguire programmi Windows su Android consente inoltre agli utenti di godere della flessibilità e della mobilità proprie dei device mobili, senza dover dipendere da un computer desktop oppure da un notebook.
Investire sulla compatibilità delle applicazioni Windows con Android consente di raggiungere una platea di utenti ancora più ampia. Microsoft sta da tempo cercando di costruire ponti verso il mondo Android. A parte lo storico progetto Mono incentrato su .NET, tuttavia, non esiste una soluzione ufficialmente supportata per portare i programmi Windows sui dispositivi del robottino verde.
Cos’è Wine e perché è un layer di compatibilità
Wine (Wine Is Not an Emulator) è un’applicazione open source che consente di eseguire applicazioni sviluppate per il sistema operativo Windows su sistemi Unix-like, come Linux e macOS. A differenza di un emulatore, Wine non emula l’intero ambiente Windows, ma fornisce un’implementazione a runtime dei componenti Windows necessari per eseguire le applicazioni sulle piattaforme non native.
Le applicazioni Windows interagiscono con il sistema operativo sfruttando le chiamate API (Application Programming Interface) specifiche del sistema operativo di casa Microsoft. Wine implementa le API in modo tale che quando un’applicazione Windows richiama una funzione specifica, il programma può fornire un risultato equivalente, eseguibile su un sistema operativo diverso da quello Microsoft. Ecco perché si parla di Wine come layer di compatibilità: le chiamate API istanziate dai programmi Windows sono tradotte in modo che il sistema operativo sottostante (diverso da Windows) possa comprenderle e gestirle adeguatamente.
Il bello di Wine, che ha ormai raggiunto un notevole livello di maturazione, è che le runtime disponibili ricoprono librerie e componenti di sistema di Windows. Si pensi, ad esempio, alle varie DLL (Dynamic Link Libraries) che costituiscono la spina dorsale dei programmi Windows, ai servizi di rete, ai driver dei dispositivi e così via. Wine fornisce anche dei registri di sistema virtuali, per consentire alle applicazioni Windows di interagire con questo importante componente.
Un layer di compatibilità come Wine si occupa anche di gestire l’interfaccia grafica e le modalità di input dei programmi Windows: è in grado di interfacciarsi con il sistema grafico del sistema operativo host per mostrare finestre, gestire tastiera, mouse, touchpad e altro ancora.
Come eseguire programmi Windows su Android usando software open source
Uno dei prodotti commerciali più noti che aiuta a eseguire i programmi Windows su Android si chiama CrossOver. Il software è una versione modificata di Wine e integra diversi interventi a livello di compatibilità, migliori per rendere l’applicazione più facile da usare e offre alcuni strumenti per la virtualizzazione.
winlator
winlator è una soluzione open source che sfrutta proprio Wine e Box86/Box64 per supportare il caricamento dei programmi Windows su Android. Wine lo conosciamo già; Box86/Box64 sono invece emulatori progettati per i dispositivi ARM64 che consentono di eseguire file binari x86 e x86_64 su tale piattaforma.
Box86 è progettato per eseguire binari x86 a 32 bit, mentre Box64 è la versione a 64 bit progettata per gli eseguibili x86-64.
Per usare winlator, basta scaricare il file APK da GitHub, effettuare il download del file main.3.com.winlator.obb
quindi posizionarlo nella cartella /storage/emulated/0/Android/obb/com.winlator
(da creare se non esiste). A questo punto è sufficiente avviare l’applicazione e attendere che la conclusione del processo d’installazione.
mobox
Un software open source che al momento assicura prestazioni superiori rispetto a winlator è mobox.
L’applicazione è progettata per eseguire applicazioni Windows in una finestra del terminale Linux su Android. Termux è un emulatore di terminale per Android che offre un ambiente Linux-like sui dispositivi mobili. Accanto ad esso, mobox utilizza i già citati Wine e Box64.
Per procedere, è necessario aver installato Termux, Termux-X11 e Input Bridge sul dispositivo Android in uso. A questo punto, è sufficiente aprire Termux e incollarvi il seguente comando:
curl -s -o ~/x https://raw.githubusercontent.com/olegos2/mobox/main/install && . ~/x
Scrivendo mobox
all’interno di Termux, è possibile avviare immediatamente l’applicazione.
Wine può essere installato o disinstallato dal menu Manage packages. Inoltre si possono caricare componenti come Mesa VirGL, Turnip, Wine Mono e Gecko dal menu Start di Wine.
Ecco una breve spiegazione di Mesa VirGL, Turnip, Wine Mono e Gecko:
Mesa è una libreria grafica open source che fornisce implementazioni delle specifiche OpenGL, Vulkan e di altri driver grafici. VirGL è un progetto nato in seno a Mesa che mira a fornire un driver OpenGL per le macchine virtuali che utilizzano l’accelerazione hardware della GPU host.
Turnip è un driver open source per Vulkan destinato alle GPU Qualcomm Adreno mentre Wine Mono è un’implementazione open source del runtime .NET (Common Language Runtime – CLR) utilizzata per eseguire applicazioni .NET su sistemi operativi diversi da Windows. Wine utilizza Wine Mono per consentire l’esecuzione di applicazioni .NET su Linux e Android.
Infine, Gecko è il motore di rendering di Mozilla Firefox ed è utilizzato per supportare la corretta visualizzazione del contenuto delle pagine Web.
Credit immagine in apertura: iStock.com – juniorbeep