Es usual que desarrolles muchas aplicaciones en ionic o que te pasen alguna para probar.
Las aplicaciones instaladas desde el computador se instalan para todos los usuarios de Android y aunque la desinstales para uno, probáblemente quedarán instaladas en los otros usuarios.
Qué pasa cuando quieres instalar una apk y sale el siguiente error?:
App not installed.
El error no es realmente muy comunicativo y buscando por la web te pueden dar soluciones desde reiniciar el móvil, ver la integridad del apk hasta formatearlo!
Entonces aquí presento qué se hizo para arreglar el problema.
- Si mi objetivo es instalar una aplicación y no funciona con la interfaz gráfica de Android, iré a los comandos.
Para ello usa el móvil en modo desarrollador, activa la opción de compartir archivos, instala android studio y ubica la aplicación adb que por lo general está en la ruta "/home/user/Android/Sdk/platform-tools/adb" o dónde hayas instalado el SDK de Android. Ejecuta el siguiente comando para instalar el apk que hayas generado o el que te hayan pasado.
$ adb install app-debug.apk
Te debería salir el error:
adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package io.ionic.starter signatures do not match previously installed version; ignoring!]
La instalación del apk no fue exitosa básicamente porque hay otra instalada, pero no te aparece en la interfaz de Android para hacerlo porque hay otros usuarios que la tienen.
- La congetura nos lleva a, quiero instalar una aplicación nueva, hay otra instalada con el mismo nombre y no tiene la misma firma digital, así que tengo que desinstalarla y así me dejará instalar la nueva, pero cuál es el nombre? Usando el comando aapt podemos saberlo.
Esta aplicación por lo general lo encuentras en la ruta /home/usuario/android-sdks/build-tools/25.0.2/aapt el número 25.0.2 lo puedes reemplazar por el de la versión que tengas instalada, estas versiones de android se consiguen instalandolas con el SDK Manager https://stuff.mit.edu/afs/sipb/project/android/docs/tools/help/sdk-manager.html o con comandos https://developer.android.com/studio/command-line/sdkmanager
$ aapt dump badging app-debug.apk
Este comando nos mostrará la siguiente información:
package: name='io.ionic.starter' versionCode='1' versionName='0.0.1' platformBuildVersionName='0.0.1'
sdkVersion:'19'
targetSdkVersion:'26'
uses-permission: name='android.permission.INTERNET'
application-icon-120:'res/mipmap-ldpi-v4/icon.png'
application-icon-160:'res/mipmap-mdpi-v4/icon.png'
application-icon-240:'res/mipmap-hdpi-v4/icon.png'
application-icon-320:'res/mipmap-xhdpi-v4/icon.png'
application-icon-480:'res/mipmap-xxhdpi-v4/icon.png'
application-icon-640:'res/mipmap-xxxhdpi-v4/icon.png'
application: label='' icon='res/mipmap-mdpi-v4/icon.png'
application-debuggable
launchable-activity: name='io.ionic.starter.MainActivity' label='FriedsApp' icon=''
feature-group: label=''
uses-feature: name='android.hardware.faketouch'
uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps'
main
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales:
densities: '120' '160' '240' '320' '480' '640'
De esto se destaca el package name 'io.ionic.starter' básicamente este es el mismo para todos los proyectos de ionic!, ahí es donde surge el problema.
$ adb devices -l
El comando lista los dispositivos, usa el identificador para ejecutar comandos remotamente de android.
$ adb -s 2af5ba1d9805 shell pm list packages
$ adb -s 2af5ba1d9805 shell pm uninstall io.ionic.starter
$ adb install app-debug.apk
Con esto listas los paquetes instalados, desinstala el de ionic e instala el apk deseado y lo importante, problema solucionado :D
Buena suerte!