Preciso obter o nome do pacote de um APK do Android. Tentei descompactar o APK e ler o conteúdo AndroidManifest.xml
, mas parece que não é um arquivo de texto.
Como posso extrair o nome do pacote do APK?
aapt dump badging <path-to-apk> | grep package:\ name
|
, pressionar enter e, em seguida, basta pesquisar a saída para o parâmetro desejado. Basta lembrar queaapt
precisa estar em seu trajetoaapt
O comando está localizado emAndroid\SDK\build-tools\version
. em janelas de comando pode seraapt dump badging <path-to-apk> | findstr -i "package: name"
ouaapt dump badging <path-to-apk>
Você pode instalar o apk no seu telefone e, em seguida,
Retirado de Localizar nome do pacote para aplicativos Android usar Intent para iniciar o aplicativo Market da Web
fonte
su
comando primeiro.pm list packages -f | grep term-to-search-for
Com base na resposta @hackbod ... mas relacionada ao Windows.
aapt
comando está localizado emAndroid\SDK\build-tools\version
. Se precisar de mais informações sobre o que éappt command
(Android Asset Packaging Tool), leia este https://stackoverflow.com/a/28234956/812915O
dump
subcomando deaapt
é usado para exibir os valores de elementos individuais ou partes de um pacote:aapt dump badging <path-to-apk>
Se você quiser ver apenas a linha com
package: name
informações, usefindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Espero que ajude outro usuário do Windows!
fonte
Se você está vendo o google play e quer saber o nome do pacote, pode consultar a barra de URL ou endereço. Você receberá o nome do pacote. Aqui
com.landshark.yaum
está o nome do pacotefonte
Se você abrir o AndroidManifest.xml usando o MS Notepad, procure por frase
package
e encontrará o seguinte:onde xxx.xxxxxxx.xxxxxxx é o nome do seu pacote, apenas escrito com um espaço após cada caractere.
É uma maneira útil quando você não possui nenhuma ferramenta específica instalada.
fonte
O seguinte script bash exibirá o nome do pacote e o nome da atividade principal:
apk_package.sh
execute assim:
fonte
Uma resposta programática
Se você precisar fazer isso programaticamente, é um pouco mais complicado do que apenas colocar a resposta em seu cérebro. Eu tenho um script que eu uso para assinar todos os nossos aplicativos, mas cada um usa uma chave diferente. Aqui estão duas maneiras de obter apenas o Nome do Pacote como saída, para que você possa colocá-lo em uma variável ou fazer o que for necessário.
Exemplo de saída:
com.example.appname
(e nada mais)Exigências
aapt
- Ferramenta de empacotamento de ativos Android, parte do download das ferramentas do SDKSolução 1
Usando
awk
especificar'
como o separador de campos, procure uma linha compackage: name=
e imprima apenas o segundo "campo" na linha:Um ponto fraco desse método é que ele depende do aapt para gerar os campos de informações do pacote na mesma ordem:
Não temos compromissos dos desenvolvedores em manter esse formato.
Solução 2
Usando
awk
especificar"
como o separador de campos, procure uma linha compackage=
e imprima apenas o segundo "campo" na linha:Uma fraqueza desse método é que ele depende do aapt para produzir
package=
apenas naAndroid Manifest:
seção da saída. Não temos compromissos dos desenvolvedores em manter esse formato.Solução 3
Expanda o arquivo apk com
apktool d
e leia o AndroidManifest.xml.Esse seria o melhor método, mas o AndroidManifest.xml é um arquivo binário e todas as respostas de SO que vejo para convertê-lo em texto não funcionam. (Usar em
apktool d
vez de um simplesunzip
deve fazer isso por você, mas não o faz.) Por favor, comente se você tem uma solução para esse problemafonte
Uma solução simples seria Abra o Android Studio -> Construir -> Analisar Apk ... navegue e selecione o APK agora, você pode encontrar o nome do pacote e praticamente você pode ler.
fonte
Se você quiser apenas saber o nome do pacote, execute adb logcat, inicie a atividade desejada, obterá uma dica sobre o nome do pacote.
fonte
Outra solução é usar aapt list e use sed para analisar isso:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
fonte
A:package="com.example.appname"
naAndroid Manifest:
seção se você fazaapt list -a
Existe uma maneira muito simples se você já tiver o APK no seu smartphone. Basta usar um desses aplicativos:
Aplicativos de visualizador de nome de pacote
fonte
Um método muito simples é usar o apkanalyzer.
fonte
Eu acho que a melhor e mais simples maneira de extrair apenas o nome do pacote no Linux é
Explicação:
package: name='([a-z0-9.]*)'.*
e substituindo pelo primeiro (e único) grupo correspondente.fonte
Você pode extrair o AndroidManifest.xml do APK, remover todos os bytes NULL, pular tudo até depois da string 'manifest' e, em seguida, encontrar um byte de comprimento seguido pelo nome do pacote (e o que vem depois). Para a tarefa difícil, uso a ótima ferramenta GEMA , portanto, o comando se parece com o seguinte:
Obviamente, você pode usar qualquer outra ferramenta para fazer a filtragem.
fonte
Se você não tiver o SDK do Android instalado, como em alguns cenários de teste, poderá obter o nome do pacote usando o seguinte método bash:
Testado em um mac. 'strings' e 'unzip' são padrão na maioria dos Linux, portanto, também devem funcionar no Linux.
fonte
você pode instalar o Package_Name_Viewer.apk no seu emulador e, a seguir, pode ver o nome do pacote de todos os aplicativos instalados no seu emulador.
fonte
Eu também tentei a coisa de descompilação, funciona, mas recentemente encontrei a maneira mais fácil:
Baixe e instale o Appium no site do Appium
Abra Appium-> Android setting, escolha o arquivo apk de destino. E então você obtém tudo o que deseja, as informações do pacote, as informações da atividade.
fonte
Para usar isso em scripts em lote, é conveniente que o script retorne apenas o nome do pacote (por exemplo, para desinstalar um aplicativo quando você tiver o APK).
Aqui está o script que eu uso:
disponível na essência
Então você pode escrever:
desinstalação adb `./getPackageName.sh file.apk`
fonte
Para o Windows a seguir funcionou para mim:
Nota
Edite os caminhos do adb, aapt, APKPath de acordo com os caminhos do adb, aapt e o local do apk no seu sistema.
Trabalhando:
%adb% install %apk%
instala o aplicativo se o dispositivo estiver conectado.%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
busca o nome do pacote e alguns outros detalhes, como a versão etc. do apk, e é armazenado em um arquivo temp.txt no mesmo local que o apk.extracts the package name and assigns to
variável %% s pkgName`%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
inicia o aplicativo.Em essência, o código acima instala o apk a partir de um determinado local na área de trabalho "Desktop \ APK \ Instant_Instal \" no dispositivo e inicia o aplicativo.
fonte
Como não consegui encontrar o nome do pacote no arquivo .apk com o editor (como sugerido acima), verifiquei as funções no aplicativo "ES Datei Explorer" / "ES File Explorer" (versão gratuita) que eu já havia instalado. Nesta ferramenta, o nome do pacote é mostrado corretamente.
Como acho que um bom explorador de arquivos não deve faltar em um telefone, sugiro usar essa ferramenta (se você já instalou o apk em um celular e precisa saber o nome do pacote).
fonte
Como foi mencionado na documentação do Android que o AAPT foi descontinuado , obter o nome do pacote usando o comando AAPT2 no Linux é o seguinte:
./aapt2 dump packagename <path_to_apk>
Como estou usando uma versão mais antiga do Gradle build, tive que baixar uma versão mais recente do AAPT2, conforme mencionado aqui:
Faça o download do AAPT2 no Google Maven
Usando as ferramentas de compilação no meu sdk - 25.0.3, 26.0.1 e 27.0.3, a execução do comando aapt2 mostra um erro: Não é possível abrir 'packagename': Não existe esse arquivo ou diretório. Por isso, fui para as versões mais recentes do AAPT2.
Eu usei 3.3.0-5013011 para linux.
fonte
Você pode usar
Analyze APK...
no menu Build no Android Studio; ele exibirá o nome do pacote na parte superior da nova janela.fonte
Eu recomendo que você salve em um arquivo .txt, porque pode ser muito longo. Assim:
Então veja o arquivo.txt no seu diretório atual.
fonte