Search code examples
androidadbsignature

How to get Signature hash code of a phone app via adb on pc?


For example, in an android program, I can do it like this:

android.content.pm.Signature[] sigs =   pkm.getPackageInfo(
                 "com.test", PackageManager.GET_SIGNATURES).signatures;

But, how can I do it via adb on PC?


Solution

  • Alex has a great answer.

    WARNING: Ugly code ahead

    I was able to get the signature in adb shell as root with the following code:

    package=com.test; b=false; while read line; do case $line in *\<package*${package}*) b=true ;; *\<cert*) if $b; then echo $line | sed -e 's|.*key="||' -e 's|".*||'; b=false; fi esac; done < /data/system/packages.xml
    

    indented:

    package=com.test
    b=false
    while read line; do
        case $line in 
            *\<package*${package}*)
                b=true ;; 
            *\<cert*)
                if $b; then
                    echo $line | sed -e 's|.*key="||' -e 's|".*||'
                    b=false
                fi
        esac
    done < /data/system/packages.xml