Siete sviluppatori (o tester) Android? Vi capita spesso di avere a che fare con file APK provenienti da sorgenti "non attendibili" o "sconosciute", come ad esempio il vostro Android Studio? Se le cose stanno così, e svolgete i vostri test utilizzando qualche smartphone Android non molto recente, è probabile che vi sarete imbattuti - o vi imbatterete presto - nel seguente errore durante l'installazione di uno dei sopracitati APK:
App not installed.
Non è esattamente il più chiaro ed esaustivo dei messaggi di errore! Come se non bastasse, con tutta probabilità l'APK che non riuscite a installare funziona perfettamente su altri dispositivi e/o sull'emulatore Android. Inutile dire che il problema non si risolve né abilitando l'installazione da sorgenti non attendibili o sconosciute, né eliminando la vecchia versione della App, né riavviando il dispositivo.
Fortunatamente, esistono un paio di soluzioni, provenienti come al solito dall'impagabile portale StackOverflow, che consentono nella maggior parte dei casi di risolvere il problema: vediamole insieme.
Signature v2 (aka Full-APK Signature) non supportata
Se il problema si verifica su un vecchio dispositivo Android e/o su una versione di Android inferiore alla 7. Come potete leggere qui, Android 7.0 "Nougat" ha introdotto un nuovo formato di firma per i file APK, noto come APK Signature Scheme v2: il nuovo schema, oltre a velocizzare l'installazione delle app, protegge maggiormente il file APK da attacchi e alterazioni provenienti da origini non autorizzate, migliorando sensibilmente la sicurezza del nostro dispositivo. Le versioni 2.2 (e successive) di Android Studio e del Plugin Android per Gradle consentono di utilizzare sia il vecchio schema v1 (aka JAR Signing) che il nuovo APK Signature Scheme v2: in altre parole, lo sviluppatore ha la possibilità di selezionare la signature v1, la signature v2 oppure entrambe, come mostrato nella screenshot seguente:
Cosa c'entra questa nuova funzionalità con il problema di cui sopra? E' presto detto: come qualcuno avrà già immaginato, il nuovo formato di firma - se utilizzato in sostituzione del precedente, quindi abilitando solo la seconda checkbox nella screenshot di cui sopra - non è compatibile con le vecchie versioni di Android, che non riusciranno a installare l'APK producendo il laconico errore "app not installed".
La soluzione, inutile dirlo, è abilitare entrambe le signature, così da consentire ad ogni versione di Android di utilizzare quella a lui più congeniale: in questo modo la App sarà più sicura sui moderni dispositivi basati su Android 7 (e versioni successive), mantenendo la piena retro-compatibilità su quelli meno recenti.
Elimina per tutti gli utenti
Se la soluzione di cui sopra non funziona, è possibile che il problema sia dovuto a una situazione molto particolare che può verificarsi su alcuni smartphone - come ad esempio il Nexus 7 - sui quali sono state configurate due o più utenze.
Andate sulle Impostazioni del vostro dispositivo, quindi aprite il pannello Gestione Applicazioni e controllate se è presente un'icona "spenta" o grigia corrispondente alla app che state cercando di installare: se la trovate, significa che la app è rimasta installata sul sistema, probabilmente perché installata originariamente da un utente diverso da quello con cui avete provato di eliminarla.
Facendo click sull'icona in questione, dovreste ricevere un messaggio di errore/avviso simile al seguente:
Not installed for this user.
Il messaggio può cambiare a seconda del dispositivo utilizzato - quello di cui sopra è quello del Nexus 7 - ma il significato è sempre lo stesso: dovete eliminare la app per tutti gli utenti. Per farlo, selezionate l'icona con "tre puntini" presente in alto a destra sullo schermo e attivate il comando "Uninstall for all users" o "Elimina per tutti gli utenti": una volta eliminata la app, provate nuovamente a installare l'APK: ci sono ottime probabilità che il problema sia stato risolto definitivamente.