Vous avez déjà manqué la bonne réponse.
Les UIDs sont stockés directement dans /data/system/packages.xml
Une version plus facile à interpréter et contenant moins d'informations est toutefois disponible à l'adresse suivante packages.list
.
Voici une ligne d'exemple de ce qu'il y a à l'intérieur (faites défiler vers la droite)
<package name="[jackpal.androidterm](https://play.google.com/store/apps/details?id=jackpal.androidterm)" codePath="/data/app/jackpal.androidterm-1" nativeLibraryPath="/data/app/jackpal.androidterm-1/lib" primaryCpuAbi="armeabi" flags="572996" ft="1592b6fa088" it="153d4948841" ut="158ed133c1f" version="71" **userId="10001"**\>
Vous voyez, il y a un userId
Attribut XML. C'est exactement l'UID que vous demandez.
En outre, userId
peut être remplacé par sharedUserId
si une application partage son UID avec une autre. Comme (aussi défilement vers la droite)
<package name="com.android.providers.telephony" codePath="/system/app/TelephonyProvider" nativeLibraryPath="/system/app/TelephonyProvider/lib" primaryCpuAbi="arm64-v8a" flags="540165" ft="159d34468e8" it="4ba52c60" ut="159d34468e8" version="1" **sharedUserId="1001"**\>
Bien sûr, vous ne voulez pas passer par cette terriblement longue packages.xml
Vous pouvez donc jeter un coup d'oeil à packages.list
comme
jackpal.androidterm 10001 0 /data/data/jackpal.androidterm default 3003,1028,1015
Très droit, n'est-ce pas ? Le 2ème champ délimité par un espace est exactement l'UID et c'est le même que celui dans packages.xml
. Ne pas modifier packages.list
. Tous les enregistrements non concordants dans packages.list
sera corrigé de packages.xml
.
Il est également possible de modifier l'UID d'une application installée. si il n'a pas d'UID partagé. Il suffit de modifier packages.xml
et de redémarrer, alors le nouvel UID prendra effet immédiatement. Les anciennes données seront effacées pour l'application modifiée. Si vous voulez conserver les données, appliquez chown
récursivement sur le répertoire de données de l'application dans /data/data
. Si les anciennes données d'une application sont effacées en raison d'une erreur d'UID, les informations correspondantes apparaîtront à l'adresse suivante /data/system/uiderrors.txt
. Comme ça :
1970/01/01 00:00: Package jackpal.androidterm uid has changed from 0 to 10001, old data erased.
Testé sur Android de 4 à 5. Je suppose que c'est applicable de Gingerbread à Nougat.