¿Guarda Android los archivos .apk? ¿si es así, donde?

Después de que Android instala una aplicación desde el Marketplace, ¿mantiene el archivo .apk?

¿Existe una ubicación estándar donde Android mantendría dichos archivos?

Las aplicaciones preinstaladas se encuentran en la carpeta /system/app . Las aplicaciones instaladas por el usuario se encuentran en /data/app . Supongo que no puedes acceder a menos que tengas un teléfono enraizado. No tengo un teléfono no enraizado aquí pero pruebe este código:

 public class Testing extends Activity { private static final String TAG = "TEST"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); File appsDir = new File("/data/app"); String[] files = appsDir.list(); for (int i = 0 ; i < files.length ; i++ ) { Log.d(TAG, "File: "+files[i]); } } 

Enumera los apks en mi magia htc enraizada y en el emu.

Si sólo desea obtener un archivo APK de algo que instaló anteriormente, haga lo siguiente:

  1. Obtener AirDroid desde Google Play
  2. Acceda a su teléfono con AirDroid desde el navegador web de su PC
  3. Ir a Aplicaciones y seleccionar la aplicación instalada
  4. Haz clic en el botón "descargar" para descargar la versión APK de esta aplicación desde tu teléfono

No necesita enraizar el teléfono, usar adb o escribir nada.

Puede utilizar el gestor de paquetes ( pm ) en el adb shell para listar paquetes:

 adb shell pm list packages 

Y para mostrar donde está el archivo .apk :

 adb shell pm path com.king.candycrushsaga package:/data/app/com.king.candycrushsaga-1/base.apk 

Y adb pull para descargar el apk.

 adb pull data/app/com.king.candycrushsaga-1/base.apk 

No hay una ubicación estándar, sin embargo, puede utilizar PackageManager para averiguar acerca de los paquetes y la clase ApplicationInfo que puede obtener de allí tiene información sobre un paquete en particular: la ruta de acceso a su .apk, la ruta de acceso a su directorio de datos, la ruta A un recurso sólo .apk (para las aplicaciones bloqueadas hacia adelante), etc. Tenga en cuenta que puede o no tener permiso para leer estos directorios en función de su relación con la otra aplicación; Sin embargo, todas las aplicaciones son capaces de leer el recurso .apk (que también es el .apk real para la aplicación sin reenviar).

Si solo está buscando en el intérprete de comandos, actualmente las aplicaciones que no se despliegan con anticipación se encuentran en /data/app/.apk. El usuario shell puede leer un .apk específico, aunque no puede enumerar el directorio. En una versión futura, la convención de nomenclatura cambiará ligeramente, así que no cuente con que siga siendo la misma, pero si obtiene la ruta de acceso de la .apk desde el gestor de paquetes, entonces puede usarla en el shell.

Las aplicaciones preinstaladas suelen estar en / system / app y las aplicaciones instaladas por el usuario están en / data / app.

Puede utilizar "adb pull", pero necesita conocer la ruta completa del archivo APK. En el emulador, puede obtener una lista de directorios usando "adb shell" + "ls". Pero en un dispositivo Android, no será capaz de hacer eso en la carpeta "/ data" debido a razones de seguridad. Entonces, ¿cómo averiguar la ruta completa del archivo APK?

Puede obtener una lista completa de todas las aplicaciones instaladas escribiendo un programa que consulta el PackageManager. Breve fragmento de código a continuación:

 PackageManager pm = getPackageManager(); List<PackageInfo> pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES); List<ApplicationInfo> appinfo_list = pm.getInstalledApplications(0); for (int x=0; x < pkginfo_list.size(); x++){ PackageInfo pkginfo = pkginfo_list.get(x); pkg_path[x] = appinfo_list.get(x).publicSourceDir; //store package path in array } 

También puede encontrar aplicaciones que proporcionarán dicha información. Hay muchos de ellos. Pruebe este (AppSender).

Si estás buscando la ruta de acceso de una aplicación específica, una solución rápida y sucia es simplemente grep el informe de error:

 $ adb bugreport | grep 'dir=/data/app' 

No sé que esto proporcionará una lista exhaustiva, por lo que puede ayudar a ejecutar la primera aplicación.

Puedes tirar de las aplicaciones con ADB. Están en / data / App /, creo.

 adb pull (location on device) (where to save) 

Tenga en cuenta que tiene que arraigar el teléfono para tirar de aplicaciones protegidas contra copia.

Instalar desde el mercado

Es el comportamiento del mercado si se mantiene el apk después de la instalación. Google play no mantiene el apk después de la instalación. Otros mercados de terceros pueden tener los comportamientos diferentes.

Instalar desde la herramienta de desarrollo / depuración (adb, eclipse, android studio)

Cuando instalamos el apk de la herramienta debug, invocamos directamente adb install o desde eclipse / android studio, el apk será transferido ( adb push ) a un directorio público de lectura y escritura, usualmente /data/local/tmp/ . Después de eso, la herramienta utilizará el comando pm para instalar, eliminará el apk temporal en /data/local/tmp/ después de la instalación correcta.

Podríamos obtener esta información de salida de depuración como siguiente.

 $ adb install bin/TestApplication.apk 3155 KB/s (843375 bytes in 0.260s) pkg: /data/local/tmp/TestApplication.apk Success 

Cómo el sistema mantiene el apk

Por supuesto el sistema tiene que almacenar todos los apks en alguna parte. Hay tres lugares para que el sistema mantenga los apks básicos en los diferentes tipos de apks.

  1. Para la aplicación de stock

Éstos se envían generalmente en el dispositivo por la fabricación, incluyendo la aplicación principal para el funcionamiento del sistema y el servicio de google, usted puede encontrarlos debajo de directorio /system/app y /system/priv-app .

  1. Aplicación instalada por el usuario

La mayoría de los apks caen en esta categoría. Estos apks son generalmente instalados desde el mercado por los usuarios o por adb install sin la opción -s . Puede encontrarlos en el directorio /data/app para un dispositivo con raíz.

  1. Aplicación en sdcard

Si el apk habilita su ubicación de instalación en sdcard con android:installLocation="auto" en su manifiesto, la aplicación se puede mover a sdcard desde el menú del administrador de aplicaciones del sistema. Estos apks normalmente se encuentran en la carpeta segura de sdcard /mnt/sdcard/asec .

Otra forma de forzar la ubicación de instalación a sdcard es usar el comando adb install -s apk-to-install.apk .

Como nota, los archivos de la aplicación preinstalada ya no están en un solo archivo .apk . Hay una carpeta que contiene archivos para cada aplicación preinstalada en el directorio /system/app o /system/priv-app para la versión más reciente de android.

Si estás enraizado, descarga el explorador de raíz de la aplicación. Mejor administrador de archivos para usuarios enraizados. De todos modos, System / app tiene todos los apks predeterminados que vienen con el teléfono, y data / apk tiene todos los apks de las aplicaciones que ha instalado. Sólo presiona larga sobre el apk que desea (mientras que en Root Explorer), llegar a su carpeta / sdcard y simplemente pegar.

En / data / app pero para la protección contra copia no creo que puedas acceder a ella.

Utilícelo para listar todos los archivos .apks en / data / app /

 adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4 
  • Datos / aplicación
  • Sistema / aplicación
  • System / priv-app
  • Mnt / asec (cuando se instala en sdcard)

Puede extraer los .apks de cualquiera de ellos:

Adb pull / mnt / asec

Si está utilizando eclipse goto DDMS y, a continuación, explorador de archivos allí verá System / Apps carpeta y los apks están allí

Los archivos .apk se pueden ubicar en el directorio / data / app /. Utilizando ES File Explorer podemos acceder a estos archivos .APK.

Cuando instalé mi aplicación en el emulador, mostró mi archivo .apk en

Data / app Entonces utilicé ls data / app // para ver si existe o no

Después de instalar su aplicación, simplemente utilice ls comando vie shell y compruebe el directorio deseado, pero depende del tipo de aplicación que intenta instalar. Utilicé este método para instalar el punto si algo está mal.

Otra forma de obtener el apk s que no se puede encontrar, en un dispositivo con raíces es con la caja de herramientas rom .

Realice una copia de seguridad utilizando el administrador de aplicaciones y luego vaya a storage/emulated/appmanager y compruebe la copia de respaldo de la aplicación del sistema o la copia de seguridad de la aplicación de usuario .

Para encontrar un apk , descargue e instale el remitente de aplicaciones Bluetooth de Play Store. Una vez finalizada la instalación, abra el remitente de la aplicación Bluetooth. (.apk) todas las aplicaciones (.apk) instaladas en tu dispositivo, luego podrás transferir fácilmente la aplicación a tu PC a través de Bluetooth.

A diferencia de lo que está escrito en la respuesta elegida, no necesita root y es posible obtener los APK de las aplicaciones instaladas, que es cómo lo he hecho en mi aplicación ( aquí ). Ejemplo:

 List<PackageInfo> packages=getPackageManager().getInstalledPackages(0); 

A continuación, para cada uno de los elementos de la lista, puede acceder a packageInfo.applicationInfo.sourceDir , que es la ruta completa del APK de la aplicación instalada.

Bueno, vine a este post porque quería reinstalar una aplicación que me gustó mucho. Si este es tu caso, solo tienes que ir a Google Play y buscar Mis aplicaciones, la pestaña Todas, y encontrarás una manera de reinstalar la aplicación que te gustó. Me enfrenté a un problema que no pude encontrar mediante la búsqueda de una aplicación, pero estaba allí en Mis aplicaciones para poder reinstalar en mi nuevo móvil;)

  • Convención de paquetes Java
  • Envía la transmisión de un apk / paquete a otro apk / package
  • ¿Cuál es la mejor práctica para poner clases bajo nombres de paquetes en Android
  • Reacondicionamiento .jar-s en Android .aar library
  • ¿Cómo incluir el JAR Spongy Castle en Android?
  • Intent es muy lento para lanzar una nueva Actividad :(
  • ¿Puedo usar una cadena de recursos para un nombre de paquete?
  • Cómo enumerar pares de valores clave de un paquete
  • ¿Cómo enviar parámetros desde un clic de notificación a una actividad?
  • Combinar paquetes de diferentes proyectos en un solo proyecto en eclipse
  • Error: "la clase debe implementar el método abstracto X", pero ya lo hace
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.