2016-11-11 3 views
0

Когда я использую инструмент dumpsys отладки какНа что ссылаются хэши «adb shell dumpsys package»?

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: 

В этом журнале вы можете найти несколько хеши (или по крайней мере первый гекс х из хешей), как:

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? Похоже, что они не соответствуют md5sum или sha1sum apk.

ответ

1

Все хеши генерируются с помощью Integer.toHexString(System.identityHashCode(object)). Но объекты, чьи хэши, которые вы пытаетесь сопоставить, содержат несколько полей (например, различные временные метки), которые не контролируются только содержимым apk. Таким образом, вы не можете создать apk, который будет генерировать желаемые значения хэша при установке.

Смежные вопросы