Pergunta

Depois que o Android instala um aplicativo do Marketplace, ele mantém o arquivo .apk?

Existe um local padrão onde o Android manteria esses arquivos?

Foi útil?

Solução

Aplicativos pré -instalados estão em /system/app pasta. Os aplicativos instalados pelo usuário estão em /data/app. Acho que você não pode acessar a menos que tenha um telefone enraizado. Não tenho um telefone enraizado aqui, mas tente 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]);

        }
    }

Ele lista os APKs em minha magia HTC enraizada e na EMU.

Outras dicas

Você pode usar o Package Manager (pm) sobre adb shell Para listar os pacotes:

adb shell pm list packages | sort

e para exibir onde o .apk O arquivo é:

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

E adb pull Para baixar o apk.

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

Se você deseja apenas obter um arquivo APK de algo que você instalou anteriormente, faça isso:

  1. Obtenha airdroid do Google Play
  2. Acesse seu telefone usando o AirDroid do seu navegador da Web do PC
  3. Vá para aplicativos e selecione o aplicativo instalado
  4. Clique no botão "Download" para baixar a versão apk deste aplicativo do seu telefone

Você não precisa enraizar seu telefone, use adb, ou escreva qualquer coisa.

Não há local padrão, no entanto, você pode usar o PackageManager para descobrir sobre os pacotes e a classe ApplicationInfo que você pode obter a partir daí tem várias informações sobre um pacote específico: o caminho para o seu .apk, o caminho para o diretório de dados, o caminho para um .apk somente de recurso (para aplicativos bloqueados para a frente), etc. Observe que você pode ou não ter permissão para ler esses diretórios, dependendo do seu relacionamento com o outro aplicativo; No entanto, todos os aplicativos podem ler o recurso .APK (que também é o aplicativo .APK real para o aplicativo não encaixado).

Se você está apenas cutucando o shell, atualmente os aplicativos não ocultos estão localizados em /data/app/.apk. O usuário do Shell pode ler um .apk específico, embora não possa listar o diretório. Em um lançamento futuro, a Convenção de Nomeação será alterada um pouco, portanto, não conte com o mesmo, mas se você conseguir o caminho do .APK do gerenciador de pacotes, poderá usá -lo no shell.

Os aplicativos pré -instalados geralmente estão em /system /aplicativos e aplicativos instalados pelo usuário estão em /dados /aplicativos.

Você pode usar "adb puxar", mas precisa saber o caminho completo do arquivo APK. No emulador, você pode obter uma listagem de diretório usando "adb shell" + "ls". Mas em um dispositivo Android, você não poderá fazer isso na pasta "/dados" devido a razões de segurança. Então, como você descobre o caminho completo do arquivo apk?

Você pode obter uma lista completa de todos os aplicativos instalados escrevendo um programa que consulta o PackageManager. Snippet de código curto abaixo:

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
}

Você também pode encontrar aplicativos que fornecerão essas informações. Há muitos deles. Experimente este (appsender).

Se você está procurando o caminho de um aplicativo específico, uma solução rápida e suja é apenas grep o relatório de bugs:

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

Não sei se isso fornecerá uma lista exaustiva, por isso pode ajudar a executar o aplicativo primeiro.

Você pode puxar aplicativos com Adb. Eles estão em/dados/app/, acredito.

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

Observe que você precisa enraizar seu telefone para puxar aplicativos protegidos de copiar.

Instalar do mercado

É comportamento do mercado manter o apk após a instalação.O Google Play não mantém o apk após a instalação.Outros mercados de terceiros podem ter comportamentos diferentes.

Instalar a partir da ferramenta de desenvolvimento/depuração (adb, eclipse, android studio)

Quando instalamos o apk da ferramenta de depuração, invocamos diretamente adb install ou do Eclipse/Android Studio, o apk será transferido (adb push) para um diretório público de leitura e gravação, geralmente /data/local/tmp/.Depois disso, a ferramenta usará o pm comando para instalar, ele excluirá o apk temporário em /data/local/tmp/ após a instalação bem-sucedida.

Poderíamos obter essas informações da saída de depuração como a seguir.

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

Como o sistema mantém o apk

É claro que o sistema precisa armazenar todos os apks em algum lugar.Existem três locais para o sistema manter os apks básicos nos diferentes tipos de apks.

  1. para aplicativo de estoque

Eles geralmente são enviados no dispositivo pelo fabricante, incluindo o aplicativo principal para execução do sistema e o serviço do Google. Você pode encontrá-los no diretório /system/app e /system/priv-app.

  1. aplicativo instalado pelo usuário

A maioria dos apks se enquadra nesta categoria.Esses apks geralmente são instalados no Marketplace pelos usuários ou por adb install sem -s opção.Você pode encontrá-los no diretório /data/app para um dispositivo com acesso root.

  1. aplicativo no cartão SD

Se o apk habilitar seu local de instalação no sdcard com android:installLocation="auto" em seu manifesto, o aplicativo pode ser movido para o cartão SD no menu do gerenciador de aplicativos do sistema.Esses apks geralmente estão localizados na pasta segura do cartão SD /mnt/sdcard/asec.

Outra maneira de forçar o local de instalação para sdcard é usar o comando adb install -s apk-to-install.apk.

Como observação, os arquivos do aplicativo pré-instalado não estão em um único .apk arquivo mais.Há uma pasta contendo arquivos para cada aplicativo pré-instalado no diretório /system/app ou /system/priv-app para a versão mais recente do Android.

In /Data /App, mas para proteção de cópia, acho que você pode acessá -lo.

Se você estiver enraizado, faça o download do aplicativo Root Explorer. Melhor gerente de arquivo para usuários enraizados. De qualquer forma, o sistema/aplicativo possui todos os APKs padrão que acompanham o telefone, e o Data/APK possui todos os APKs dos aplicativos que você instalou. Apenas pressione por muito tempo o apk desejado (enquanto estiver em root explorer), acesse a pasta /sdcard e apenas cola.

Use isso para listar todos .apks sob/dados/app/

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
  • dados/aplicativos
  • sistema/aplicativo
  • Sistema/Priv-App
  • MNT/ASEC (quando instalado em SDCARD)

Você pode puxar os .apks de qualquer um deles:

ADB PULL /MNT /ASEC

Os arquivos .APK podem ser localizados no/Data/App/Diretório. Usando ES explorador de arquivos ES Podemos acessar esses arquivos .apk.

Se você estiver usando o eclipse goto ddms e depois o arquivo explorador, você verá a pasta Sistema/Apps e os APKs estão lá

Quando instalei meu aplicativo no emulador, ele mostrou o meu arquivo .apk em

dados/aplicativos então usei dados LS/app // para ver se existe ou não

Depois de instalar seu aplicativo, use o comando ls vie shell e verifique o diretório desejado, mas depende de que tipo de aplicativo você está tentando instalar. Eu usei este método para Instalar Apontar se alguma coisa estiver errada.

Outra maneira de conseguir o apks Você não consegue encontrar, em um dispositivo enraizado está com ROM Caixa de ferramentas.

Faça um backup usando o App Manager e depois vá para storage/emulated/appmanager e verifique também Backup de aplicativos do sistema ou Backup de aplicativo de usuário.

Para encontrar um apk, faça o download e instale o remetente do aplicativo Bluetooth na Play Store. Depois que a instalação concluir, abra o remetente do aplicativo Bluetooth. Isso vai mostrar todos os aplicativos (.apk) Instalado no seu dispositivo, você pode transferir facilmente o aplicativo para o seu PC através do Bluetooth.

Ao contrário do que está escrito na resposta escolhida, você não precisa de root e é possível obter os APKs dos aplicativos instalados, e foi assim que eu fiz no meu aplicativo (aqui). Exemplo:

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

Então, para cada um dos itens da lista, você pode acessar PackageInfo.ApplicationInfo.sourcedir, que é o caminho completo do apk do aplicativo instalado.

Bem, eu vim para este post porque queria reinstalar algum aplicativo que eu gostei muito. Se esse for o seu caso, basta ir ao Google Play e procurar meus aplicativos, a guia All, e você encontrará uma maneira de reinstalar algum aplicativo que você gostou. Enfrentei um problema que não consegui encontrar pela pesquisa em um aplicativo, mas estava lá nos meus aplicativos para que eu pudesse reinstalar no meu novo celular;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top