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

Después de que android instala una aplicación del mercado, ¿conserva el archivo .apk?

¿Hay una ubicación estándar donde Android mantendrá esos archivos?

Las aplicaciones preinstaladas se encuentran en la carpeta /system/app . Las aplicaciones instaladas por el usuario están en /data/app . Supongo que no puedes acceder a menos que tengas un teléfono rooteado. No tengo un teléfono rooteado 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]); } } 

Sí enumera los apk en mi raíz htc magic y en el emu.

Si solo desea obtener un archivo APK de algo que haya instalado previamente, haga esto:

  1. Obtén AirDroid de Google Play
  2. Acceda a su teléfono usando AirDroid desde el navegador web de su PC
  3. Ve a Aplicaciones y selecciona la aplicación instalada
  4. Haga clic en el botón “descargar” para descargar la versión de APK de esta aplicación desde su teléfono

No necesita rootear su teléfono, usar adb o escribir nada.

Puede usar package manager ( pm ) sobre adb shell para listar paquetes:

 adb shell pm list packages 

y para mostrar dónde 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 usar el PackageManager para obtener información sobre los paquetes y la clase ApplicationInfo que puede obtener a partir de allí tiene diversa información sobre un paquete en particular: la ruta a su archivo .apk, la ruta a su directorio de datos, la ruta a .apk solo de recursos (para aplicaciones de locking directo), etc. Tenga en cuenta que puede o no tener permiso para leer estos directorios dependiendo de su relación con la otra aplicación; sin embargo, todas las aplicaciones pueden leer el recurso .apk (que también es el archivo .apk real para la aplicación no bloqueada).

Si solo está hurgando en el intérprete de comandos, las aplicaciones que actualmente no están dirigidas hacia adelante se encuentran en /data/app/.apk. El usuario de shell puede leer un archivo .apk específico, aunque no puede mostrar el directorio. En una versión futura, la convención de nomenclatura cambiará ligeramente, por lo tanto, no espere que siga siendo la misma, pero si obtiene la ruta de la .apk desde el administrador de paquetes, puede usarla en el intérprete de comandos.

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

Puede usar “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 podrás hacer eso en la carpeta “/ data” por 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 progtwig que consulte el PackageManager. Fragmento de código corto a continuación:

 PackageManager pm = getPackageManager(); List pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES); List 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 proporcionen dicha información. Hay muchos de ellos. Prueba este (AppSender).

Si está buscando la ruta 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é si esto proporcionará una lista exhaustiva, por lo que puede ser útil ejecutar la aplicación primero.

Puede extraer aplicaciones con ADB. Están en / data / App /, creo.

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

Tenga en cuenta que debe rootear su teléfono para extraer aplicaciones protegidas contra copia.

Instalar desde el mercado

Es el comportamiento del mercado si mantener 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 diferentes comportamientos.

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

Cuando instalamos el apk de la herramienta de depuración, invocar directamente la adb install o desde eclipse / android studio, la apk se transferirá ( adb push ) a un directorio público de lectura y escritura, generalmente /data/local/tmp/ . Después de eso, la herramienta usará el comando pm para instalar, se eliminará la apk temporal en /data/local/tmp/ después de la instalación exitosa.

Podríamos obtener esta información del resultado de depuración de la siguiente manera.

 $ 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 apk en algún lugar. Hay tres lugares para que el sistema mantenga los apks básicos en los diferentes tipos de apk.

  1. para la aplicación de stock

Normalmente, estos se envían en el dispositivo por fabricación, incluida la aplicación principal para el funcionamiento del sistema y el servicio de google, puede encontrarlos en el directorio /system/app y /system/priv-app .

  1. aplicación instalada por el usuario

La mayoría de los apk entran en esta categoría. Estos apks suelen ser instalados desde el mercado por los usuarios o mediante la adb install sin la opción -s . Puede encontrarlos en el directorio /data/app para un dispositivo rooteado.

  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 generalmente se encuentran en la carpeta segura de sdcard /mnt/sdcard/asec .

Otra forma de forzar la ubicación de instalación para sdcard es usando 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á rooteado, descargue la aplicación Root Explorer. El mejor administrador de archivos para usuarios rooteados. De todas formas, System / app tiene todos los apk predeterminados que vienen con el teléfono, y data / apk tiene todos los apk de las aplicaciones que tienes instaladas. Simplemente mantenga presionada la aplicación que desee (mientras esté en Root Explorer), vaya a la carpeta / sdcard y simplemente péguelo.

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

Use esto para mostrar todas las .apks en / data / app /

 adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4 
  • datos / aplicación
  • sistema / aplicación
  • sistema / priv-app
  • mnt / asec (cuando está instalado en una tarjeta sd)

Puede extraer los .apks de cualquiera de ellos:

adb pull / mnt / asec

si está usando eclipse goto DDMS y luego explorador de archivos, verá la carpeta System / Apps y los apks estarán allí

Los archivos .apk pueden ubicarse en el directorio / data / app /. Usando ES File Explorer podemos acceder a estos archivos .APK.

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

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

Después de instalar su aplicación, simplemente use ls command vie shell y compruebe el directorio deseado, pero depende del tipo de aplicación que intente instalar. Usé este método para instalar Point si algo está mal.

Otra forma de obtener los apk que no puede encontrar, en un dispositivo rooteado es con la caja de herramientas rom .

Haga una copia de seguridad usando el administrador de aplicaciones, luego vaya a storage/emulated/appmanager y verifique la copia de seguridad de la aplicación del sistema o la de la aplicación del usuario .

Para encontrar una aplicación, descargue e instale el Bluetooth App Sender desde Play Store. Una vez que la instalación se complete, abra el Bluetooth App Sender. (.apk) todas las aplicaciones (.apk) instaladas en su dispositivo, luego podrá transferir fácilmente la aplicación a su 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 como lo he hecho en mi aplicación ( aquí ). Ejemplo:

 List packages=getPackageManager().getInstalledPackages(0); 

Luego, 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 esta publicación porque quería reinstalar alguna aplicación que me gustaba mucho. Si este es tu caso, solo ve a Google Play y busca Mis aplicaciones, la pestaña Todos, y encontrarás una forma de reinstalar alguna aplicación que te haya gustado. Me enfrenté a un problema que no pude encontrar buscando una aplicación, pero estaba allí en Mis aplicaciones para poder reinstalarlo en mi nuevo móvil;)