android - studio - register google play account




Leia o nome do pacote de um APK Android (14)

lista de aapt -a "path_to_apk"

Eu recomendo que você salve em um arquivo .txt, porque pode ser muito longo. Assim:

aapt list -a "path_to_apk"> arquivo.txt

Então veja o arquivo.txt em seu diretório atual.

Preciso obter o nome do pacote de um APK Android. Eu tentei descompactar o APK e ler o conteúdo do AndroidManifest.xml , mas parece que não é um arquivo de texto.

Como posso extrair o nome do pacote do APK?


Uma resposta programática

Se você precisa fazer isso de forma programática, é um pouco mais complicado do que apenas obter a resposta em seu cérebro. Eu tenho um script que 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 precisar com ele.

Exemplo de saída: com.example.appname (e nada mais)

Requisitos

aapt - Ferramenta de empacotamento de ativos do Android, parte do download das Ferramentas do SDK

Solução 1

Usando awk especifique ' como o Separador de Campos, procure por uma linha com package: name= e imprima apenas o segundo "campo" na linha:

aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'

Uma fraqueza desse método é que ele depende do aapt para gerar os campos de informações do pacote na mesma ordem:

package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'

Não temos compromissos dos desenvolvedores para manter este formato.

Solução 2

Usando awk especifique " como separador de campo, procure por uma linha com package= e imprima apenas o segundo" campo "na linha:

aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'

Uma fraqueza desse método é que ele depende do package= aapt to output package= apenas na seção Android Manifest: da saída. Não temos compromissos dos desenvolvedores para manter este 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 SO que eu vejo para convertê-lo em texto não funcionam. (Usando apktool d vez de um simples unzip é suposto fazer isso por você, mas isso não acontece.) Por favor, comente se você tiver uma solução para este problema


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á tinha instalado. Nesta ferramenta, o nome do pacote é mostrado corretamente.
Como eu acho que um bom explorador de arquivos não deve estar faltando em um telefone, sugiro usar esta ferramenta (se você já instalou o apk em um celular e tem que saber o nome do pacote).


Desde a mencionada na documentação do Android que o AAPT foi preterido , obter o nome do pacote usando o comando AAPT2 no Linux é o seguinte:

./aapt2 dump packagename <path_to_apk>

Desde que eu estou usando uma versão mais antiga do Gradle build, eu tive que baixar uma versão mais recente do AAPT2 como mencionado aqui:

Baixe o AAPT2 do Google Maven

Usando o build-tools 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 'nome do pacote': Nenhum arquivo ou diretório. É por isso que eu fui para as versões mais recentes do AAPT2.

Eu usei o 3.3.0-5013011 para o linux.


Eu também tentei a descompilação, funciona, mas recentemente eu encontrei a maneira mais fácil:

  1. Baixe e instale o Appium no site da Appium

  2. Abra a configuração Appium-> Android, 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.



Outra solução é usar a lista do aapt e usar o sed para analisar isso:

aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"


Para o Windows seguinte funcionou para mim:

:: // Initializing variables
SET adb="C:\Users\<User name>\AppData\Local\Android\Sdk\platform-tools\adb"
SET aapt="C:\Users\<User name>\AppData\Local\Android\Sdk\build-tools\22.0.0\aapt"
SET APKPath=C:\Users\<User name>\Desktop\APK\Instant_Instal\

CD %APKPath%

:: // Searching for apk file and storing it
FOR /F "delims=" %%f IN ('dir /S /B *.apk') DO SET "APKFullPath=%%f"
SET apk=%APKFullPath%

:: // Command adb install apk, run apk
%adb% install %apk%

:: // Fetching package name from apk
%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
FOR /F "tokens=2 delims='" %%s IN (temp.txt) DO SET pkgName=%%s
del temp.txt

:: // Launching apk
%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1

pause

Nota

Por favor, edite os caminhos de adb, aapt, APKPath de acordo com os caminhos de adb, aapt e a localização do apk em seu sistema.

Trabalhando:

  • Aqui eu adicionei o apk em uma pasta na área de trabalho "\ Desktop \ APK \ Instant_Instal \".
  • O comando %adb% install %apk% instala o aplicativo se o dispositivo estiver conectado.
  • Este %aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt %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 armazena em um arquivo temp.txt no mesmo local que o do apk.
  • FOR / F "tokens = 2 delims = '" %% s IN (temp.txt) DO SET pkgName = %% s extracts the package name and assigns to variável pkgName`
  • Finalmente %adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1 inicia o aplicativo.

Em essência, o código acima instala o apk de determinado local na área de trabalho "Desktop \ APK \ Instant_Instal \" para o dispositivo e inicia o aplicativo.


Se você abrir o AndroidManifest.xml usando o MS Notepad, pesquise por package frases e você encontrará o seguinte:

package manifest $xxx.xxxxxxx.xxxxxxx |

onde xxx.xxxxxxx.xxxxxxx é o nome do seu pacote, apenas escrito com um espaço após cada caractere.

É útil quando você não possui ferramentas específicas instaladas.


Se você está olhando para o google play e quer saber o nome do seu pacote, então você pode olhar para url ou barra de endereços. Você receberá o nome do pacote. Aqui com.landshark.yaum é o nome do pacote

 https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd

Uma solução simples seria Abra o Android Studio -> Construir -> Analisar Apk ... navegar e selecione o APK agora você pode encontrar o nome do pacote e praticamente você pode ler.


Você pode extrair o AndroidManifest.xml do APK, remover todos os bytes NULL, pular tudo até depois da string 'manifest', e então você está em um byte de comprimento seguido pelo nome do pacote (e o que vem depois dele). Para a tarefa difícil, eu uso a ótima ferramenta GEMA , então o comando se parece com isso:

7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>[email protected]{0;@char-int{$1};$2}'

Claro, você pode usar qualquer outra ferramenta para fazer a filtragem.


você pode instalar o Package_Name_Viewer.apk no seu emulador e em seguida você pode ver o nome do pacote de todos os aplicativos instalados no seu emulador.


aapt dump badging <path-to-apk> | grep package:\ name






apk