Respuestas:
Las aplicaciones preinstaladas están en la /system/app
carpeta. 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 prueba 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 rooteada y en el emu.
Puede usar el administrador de paquetes ( pm
) adb shell
para enumerar los paquetes:
adb shell pm list packages | sort
y para mostrar dónde está el .apk
archivo:
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
adb pull /data/app/com.example.app-filename.apk path/to/desired/destination
Si solo desea obtener un archivo APK de algo que instaló anteriormente, haga lo siguiente:
No necesita rootear su teléfono, usar adb
o escribir nada.
No hay una ubicación estándar, sin embargo, puede usar PackageManager para obtener información sobre los paquetes y la clase ApplicationInfo que puede obtener desde allí tiene información diversa sobre un paquete en particular: la ruta a su .apk, la ruta a su directorio de datos, la ruta a un .apk de solo recursos (para aplicaciones bloqueadas hacia adelante), 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 .apk real para la aplicación sin bloqueo de reenvío).
Si solo está hurgando en el shell, las aplicaciones actualmente sin bloqueo de reenvío se encuentran en /data/app/.apk. El usuario de 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 del archivo .apk desde el administrador de paquetes, puede usarlo en el shell.
Las aplicaciones preinstaladas generalmente están 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 un listado de directorio usando "adb shell" + "ls". Pero en un dispositivo Android, no podrá hacerlo 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 programa que consulte el PackageManager. Fragmento de código corto 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 brinden 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 obtener el informe de errores:
$ adb bugreport | grep 'dir=/data/app'
No sé si esto proporcionará una lista exhaustiva, por lo que puede ser útil ejecutar primero la aplicación.
Instalar desde el mercado
Es el comportamiento del mercado si mantener la apk después de la instalación. Google Play no mantiene la apk después de la instalación. Otros mercados de terceros pueden tener comportamientos diferentes.
Instalar desde la herramienta de desarrollo / depuración (adb, eclipse, android studio)
Cuando instalamos el apk desde la herramienta de depuración, invocamos directamente adb install
o desde eclipse / android studio, el apk se transferirá ( adb push
) a un directorio público de lectura y escritura, por lo general /data/local/tmp/
. Después de eso, la herramienta usará el pm
comando para instalar, eliminará el apk temporal /data/local/tmp/
después de la instalación exitosa.
Podríamos obtener esta información de la salida de depuración como la 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 todas las aplicaciones en algún lugar. Hay tres lugares para que el sistema mantenga las aplicaciones basadas en los diferentes tipos de aplicaciones:
para la aplicación de stock
Por lo general, estos se envían en el dispositivo por fabricación, incluida la aplicación principal para el sistema en ejecución y el servicio de Google, puede encontrarlos en el directorio /system/app
y /system/priv-app
.
aplicación instalada por el usuario
La mayoría de los apks entran en esta categoría. Por lo general, estos usuarios los instalan desde el mercado o adb install
sin -s
opción. Puede encontrarlos en el directorio /data/app
de un dispositivo rooteado.
aplicación en tarjeta sd
Si el apk habilita su ubicación de instalación en sdcard con android:installLocation="auto"
su manifiesto, la aplicación se puede mover a sdcard desde el menú del administrador de aplicaciones del sistema. Estas aplicaciones generalmente 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 para la aplicación preinstalada ya no están en un solo .apk
archivo. 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.
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.
En / data / app pero para protección de copia no creo que puedas acceder a él.
Si está rooteado, descargue la aplicación Root Explorer. El mejor administrador de archivos para usuarios rooteados. De todos modos, Sistema / aplicación tiene todas las aplicaciones predeterminadas que vienen con el teléfono, y datos / apk tiene todas las aplicaciones de las aplicaciones que ha instalado. Simplemente mantenga presionada la apk que desee (mientras está en Root Explorer), acceda a su carpeta / sdcard y simplemente pegue.
si está usando eclipse goto DDMS y luego el explorador de archivos allí verá la carpeta Sistema / Aplicaciones y las aplicaciones están allí
Cuando instalé mi aplicación en el emulador, me mostró el archivo .apk en
data / app Luego usé ls data / app // para ver si existe o no
Después de instalar su aplicación, simplemente use el comando ls vie shell y verifique el directorio deseado, pero depende del tipo de aplicación que esté intentando instalar. Usé este método para instalar Point si algo está mal.
Otra forma de obtener los apk
mensajes de correo electrónico que no puede encontrar, en un dispositivo rooteado es con la caja de herramientas rom .
Realice una copia de seguridad con el administrador de aplicaciones, luego vaya storage/emulated/appmanager
y compruebe la copia de seguridad de la aplicación del sistema o la copia de seguridad de la aplicación del usuario .
Para buscar apk
, descargue e instale el remitente de la aplicación Bluetooth desde Play Store. Una vez que se complete la instalación, abra el remitente de la aplicación Bluetooth. Mostrará todas las aplicaciones (.apk)
instaladas en su dispositivo, luego puede 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 hice en mi aplicación ( aquí ). Ejemplo:
List<PackageInfo> 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, llegué a esta publicación porque quería reinstalar alguna aplicación que me gustaba mucho. Si este es su caso, simplemente vaya a Google Play y busque Mis aplicaciones, la pestaña Todos, y encontrará la manera de reinstalar alguna aplicación que le haya gustado. Me enfrenté a un problema que no pude encontrar al buscar una aplicación, pero estaba allí en Mis aplicaciones para poder reinstalarla en mi nuevo móvil;)