Leggi il nome del pacchetto di un Android APK

Ho bisogno di get il nome del pacchetto di un Android APK. Ho provato a estrarre l'APK e leggere i contenuti di AndroidManifest.xml , ma sembra che non sia un file di text.

Come posso estrarre il nome del pacchetto APK?

  • ViewPager non ridisegna il contenuto, resta / diventa vuoto
  • eseguire AsyncTask parallelo
  • Android: "Il constructor AlertDialog.Builder (nuovo View.OnClickListener () {}) è undefined" error
  • Anteprima della camera Android su due visioni (anteprima della camera multi-lenti)
  • "Difficoltà a scrivere l'output: Troppi riferimenti di field: 70185; max è 65536. Puoi provare a utilizzare l'opzione multi-dex "quando si costruisce un progetto Android
  • Qual è lo scopo del tag <merge> di Android nei layout XML?
  • Qual è il modo migliore per get contatti distinti in Android?
  • CookieSyncManager :: createInstance () deve essere chiamato prima di CookieSyncManager :: getInstance ()
  • Come rendere scorrimento di elenco di androidi?
  • TabLayout (libreria di design di Android) Colore del text
  • Animazione personalizzata Android come tabella di pianificazione degli aeroporti
  • Vista orizzontale della griglia di scorrimento
  • 16 Solutions collect form web for “Leggi il nome del pacchetto di un Android APK”

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

    È quindi ansible installare l'apk sul tuo telefono

    connetti usando adb, puoi lanciare shell adb e eseguire i pacchetti listini pm, che mostra il nome del pacchetto per each apk installato.

    Questo è stato prelevato dal nome del pacchetto Trova per le applicazioni Android per utilizzare l'intento di avviare l'applicazione di Market dal web

    Se si apre l'AndroidManifest.xml con MS Notepad, cercare il package frasi e troverai quanto segue:

     package manifest $xxx.xxxxxxx.xxxxxxx | 

    where xxx.xxxxxxx.xxxxxxx è il tuo nome del pacchetto, appena scritto con uno spazio dopo each carattere.

    È utile quando non si dispone di strumenti specifici installati.

    Il seguente script bash visualizzerà il nome del pacchetto e il nome dell'attività principale:

    apk_package.sh

     package=$(aapt dump badging "$*" | awk '/package/{gsub("name=|'"'"'",""); print $2}') activity=$(aapt dump badging "$*" | awk '/activity/{gsub("name=|'"'"'",""); print $2}') echo echo " file : $1" echo "package : $package" echo "activity: $activity" 

    eseguire così:

     apk_package.sh /path/to/my.apk 

    Se stai guardando il gioco google e vuoi sapere il suo nome del pacchetto puoi vedere l'URL o la barra degli indirizzi. Otternetworking il nome del pacchetto. Qui com.landshark.yaum è il nome del pacchetto

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

    Sulla base della risposta @hackbod … ma legata a windows.

    aapt command aapt si trova su Android\SDK\build-tools\version . Se hai bisogno di maggiori informazioni su ciò che è il appt command (Android Asset Packaging Tool), leggi questo https://stackoverflow.com/a/28234956/812915

    Il sottoprogramma dump di aapt viene utilizzato per visualizzare i valori di singoli elementi o parti di un pacchetto:

    aapt dump badging <path-to-apk>

    Se vuoi vedere solo la linea con il package: name info, usa findstr

    aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"

    Spero che aiuta altri utenti di Windows!

    Se vuoi solo sapere il nome del pacchetto, eseguire il logb adb, avviare l'attività desiderata, avrai un suggerimento sul nome del pacchetto.

    Un'altra soluzione è quella di utilizzare l'elenco di aapt e utilizzare sed per analizzare attraverso:

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

    Una risposta programmata

    Se hai bisogno di farlo in modo programmato, è un po 'più coinvolto che non solo get la risposta nel tuo cervello. Ho uno script che utilizzo per firmare tutte le nostre applicazioni, ma ognuno usa una chiave diversa. Ecco due modi per get il nome del pacchetto come output in modo da poterlo metterlo in una variabile o fare tutto ciò che ti serve.

    Esempio di output: com.example.appname (e niente di più)

    Requisiti

    aapt – Android Asset Packaging Tool, parte del download SDK Tools

    Soluzione 1

    Utilizzando awk specifica ' come Separatore di field, cercare una row con il package: name= e printingre solo il secondo "field" nella row:

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

    Una debolezza di questo metodo è che si basa su aapt per l'output dei campi di informazioni dei pacchetti nello stesso ordine:

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

    Dobbiamo impegnarci dagli sviluppatori per mantenere questo formato.

    Soluzione 2

    Usando awk specifica " come separatore di field, cercare una row con package= e printingre solo il secondo" field "nella row:

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

    Una debolezza di questo metodo è che si basa su aapt per il package= output package= solo nella sezione Android Manifest: l'output. Dobbiamo impegnarci dagli sviluppatori per mantenere questo formato.

    Soluzione 3

    Espandere il file apk con apktool d e leggere l'AndroidManifest.xml.

    Questo sarebbe il metodo migliore, ma AndroidManifest.xml è un file binario e tutte le risposte SO che vedo per la conversione nel text non funzionano. (Utilizzando apktool d invece di un semplice apktool d dovrebbe farlo per te, ma non lo fa.) Si prega di commentare se hai una soluzione a questo problema

    Penso che il modo migliore e più semplice per estrarre solo il nome del pacchetto in Linux è

     aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*/\1/" 

    Spiegazione:

    1. AAPT estrae le informazioni APK
    2. Grep "pacchetto" per mantenere solo la linea circa le informazioni sul pacchetto
    3. Fare sed sostituire l'intera row con il nome del pacchetto solo utilizzando il seguente regex: package: name='([a-z0-9.]*)'.* E sostituire con il primo (e solo) gruppo di corrispondenza.

    puoi installare Package_Name_Viewer.apk sull'emulatore e successivamente puoi vedere il nome del pacchetto di tutte le app installa sull'emulatore.

    Ho anche provato la cosa di compilazione, funziona, ma recentemente ho trovato il modo più semplice:

    1. Scaricare e installare Appium dal sito web Appium

    2. Apri Appium-> Impostazioni Android, scegli il file apk di destinazione. E poi hai tutto quello che vuoi, le informazioni sul pacchetto, le informazioni sull'attività.

    Per utilizzarlo in script di batch, è utile avere lo script restituito solo il nome del pacchetto (ad esempio per disinstallare un'applicazione quando si dispone dell'APK).

    Ecco lo script che uso:

     # extract the android package id from a built apk file # usage ./getPackageName.sh <path-to-apk> line=`aapt dump badging "$1" | grep package:\ name` # above returns: # package: name='com.calvium.myapp' versionCode='1' versionName='1.0' if [[ $line =~ name=\'(.+)\'\ versionCode ]]; then echo ${BASH_REMATCH[1]} else echo "Failed to find package name" exit 1 fi 

    disponibile sul gist

    Quindi potresti scrivere:

    adb disinstallare `./getPackageName.sh file.apk`

    Puoi estrarre AndroidManifest.xml dall'APK, rimuovere tutti i bytes NULL, saltare tutto fino a quando non sarà la string 'manifesto', e poi sei in un byte di lunghezza seguito dal nome del pacchetto (e da ciò che viene dopo). Per il task difficile uso il grande strumento GEMA , quindi il command sembra così:

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

    Naturalmente, è ansible utilizzare qualsiasi altro strumento per eseguire il filtraggio.

    C'è un modo molto semplice se hai già ricevuto il tuo APK sul tuo Smartphone. Utilizza solo uno di questi APP:

    Applicazioni del visualizzatore di pacchetti

    aapt list -a "path_to_apk"

    Ti consiglio di salvarlo in un .txt, perché può essere molto lungo. Così:

    aapt list -a "path_to_apk"> file.txt

    Quindi vedi il file.txt nella tua directory corrente.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.