2016-11-11 51 views
0

當我使用dumpsys調試工具,如Android的'adb shell dumpsys包'哈希引用了什麼?

adb shell dumpsys package com.example.testapp.first 

我得到的結果爲單包像這樣(的Nexus 6P,7.1.1):

Packages: 
    Package [com.example.testapp.first] (2036fd1): 
    userId=10225 
    pkg=Package{42e7a36 com.example.testapp.first} 
    codePath=/data/app/com.example.testapp.first-1 
    resourcePath=/data/app/com.example.testapp.first-1 
    legacyNativeLibraryDir=/data/app/com.example.testapp.first-1/lib 
    primaryCpuAbi=null 
    secondaryCpuAbi=null 
    versionCode=1 minSdk=21 targetSdk=24 
    versionName=1.0 
    splits=[base] 
    apkSigningVersion=1 
    applicationInfo=ApplicationInfo{29cb2a4 com.example.testapp.first} 
    flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ] 
    privateFlags=[ RESIZEABLE_ACTIVITIES ] 
    dataDir=/data/user/0/com.example.testapp.first 
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity] 
    timeStamp=2016-11-03 01:12:08 
    firstInstallTime=2016-11-03 01:12:09 
    lastUpdateTime=2016-11-03 01:12:09 
    signatures=PackageSignatures{9fe380d [53ea108d]} 
    installPermissionsFixed=true installStatus=1 
    pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ] 
    User 0: ceDataInode=474317 installed=true hidden=false suspended=false stopped=true notLaunched=true enabled=0 
     runtime permissions: 

在此日誌中,你可以找到幾個散列(或至少散列的第一個x十六進制),如:

Package [com.example.testapp.first] (2036fd1): 
pkg=Package{42e7a36 com.example.testapp.first} 
applicationInfo=ApplicationInfo{29cb2a4 com.example.testapp.first} 
signatures=PackageSignatures{9fe380d [53ea108d]} 

但我無法找到任何參考關於如何生成它們。安裝在兩個不同設備上的相同應用不匹配單個散列。我想我的原始問題是:我可以生成一個apk的校驗和/哈希值,它必須與dumpsys日誌中顯示的哈希相匹配嗎?看起來它們不匹配apk的md5sumsha1sum

回答

1

Integer.toHexString(System.identityHashCode(object))一起生成所有哈希。但是你試圖匹配哈希的對象包含多個不受apk內容控制的字段(例如各種時間戳)。所以你不能創建一個安裝時會產生所需散列值的apk。

相關問題