При установке приложения Android присваивает ему уникальный UID. Какие файлы используются для отслеживания используемых UID и кому они принадлежат? Я хочу принудительно изменить UID приложения, чтобы они были одинаковыми на разных устройствах.
Я уже проверил с /data/system/packages.xml
. Но хотя это содержит разрешения приложения по имени пакета, там не было никакого UID.
Если это зависит от версии Android, для каждой версии выше или равной 4.4.4 и источнику документации, чтобы выяснить это самостоятельно для будущих версий.
Вы уже пропустили правильный ответ.
UID хранятся прямо в /data/system/packages.xml
, хотя более простая для интерпретации версия с меньшим количеством информации доступна по адресу packages.list
.
Вот пример строки того, что внутри (прокрутите вправо)
<package name=" 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" версия="71" userId="10001" >
Видите ли, есть userId
XML-атрибут. Это именно тот UID, который вы запрашиваете.
Кроме того, userId
может быть заменено, sharedUserId
если приложение делится своим UID с другим. Нравится (также листайте вправо)
<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" версия="1" sharedUserId="1001" >
Конечно, вы не хотите проходить через это ужасно долго packages.xml
, так что вы можете взглянуть на packages.list
, например,
jackpal.androidterm 10001 0 /data/data/jackpal.androidterm по умолчанию 3003,1028,1015
Очень прямо, не так ли? Второе поле, разделенное пробелом, — это именно UID, и оно такое же, как и в packages.xml
. Не изменять packages.list
. Все несовпадающие записи packages.list
будут исправлены из packages.xml
.
Кроме того, можно изменить UID установленного приложения, если у него нет общего UID. Просто отредактируйте packages.xml
и перезагрузитесь, после чего новый UID вступит в силу немедленно. Старые данные для измененного приложения будут удалены. Если вы хотите сохранить данные, применяйте chown
рекурсивно к каталогу данных приложения в файлах /data/data
. Если старые данные приложения удаляются из-за несоответствия UID, соответствующая информация будет отображаться в /data/system/uiderrors.txt
. Так:
01.01.1970 00:00: uid пакета jackpal.androidterm изменен с 0 на 10001, старые данные стерты.
Протестировано на Android с 4 по 5. Думаю, это применимо от Gingerbread до Nougat.
xavier_fakerat
Срули
алекс
Срули
алекс