Пакет не соответствует uid: 10124 на диске, 10134 в настройках

У меня возникли проблемы на устройствах Android 2.3.X для одного из моих приложений (имя пакета com.netbiscuits.kicker). Однако я не могу установить свой APK. Я попытался установить его непосредственно из eclipse (хранилище ключей отладки) со следующим сообщением в LogCat:

05-02 09:29:03.671: D/PackageManager(279): Scanning package com.netbiscuits.kicker
05-02 09:29:03.671: E/PackageManager(279): Package com.netbiscuits.kicker has mismatched uid: 10124 on disk, 10134 in settings
05-02 09:29:03.671: I/PackageManager(279): Linking native library dir for /data/app/com.netbiscuits.kicker-1.apk
05-02 09:29:03.681: D/installd(126): DexInv: --- BEGIN '/data/app/com.netbiscuits.kicker-1.apk' ---
05-02 09:29:06.641: D/dalvikvm(2530): creating instr width table
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/Decoder;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/DecoderException;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/Encoder;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/EncoderException;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/StringEncoderComparator;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/language/DoubleMetaphone$DoubleMetaphoneResult;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/language/SoundexUtils;' has an earlier definition; blocking out
05-02 09:29:07.451: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/net/RFC1522Codec;' has an earlier definition; blocking out
05-02 09:29:07.591: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/BinaryDecoder;' has an earlier definition; blocking out
05-02 09:29:07.591: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/BinaryEncoder;' has an earlier definition; blocking out
05-02 09:29:07.591: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/StringDecoder;' has an earlier definition; blocking out
05-02 09:29:07.591: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/StringEncoder;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/binary/BinaryCodec;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/binary/Hex;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/language/DoubleMetaphone;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/language/Metaphone;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/language/RefinedSoundex;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/language/Soundex;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/net/BCodec;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/net/QCodec;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/net/QuotedPrintableCodec;' has an earlier definition; blocking out
05-02 09:29:07.641: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/net/URLCodec;' has an earlier definition; blocking out
05-02 09:29:07.671: D/dalvikvm(2530): DexOpt: 'Lorg/apache/commons/codec/binary/Base64;' has an earlier definition; blocking out
05-02 09:29:07.751: D/dalvikvm(2530): DexOpt: couldn't find field Landroid/graphics/BitmapFactory$Options;.inMutable
05-02 09:29:07.971: I/dalvikvm(2530): DexOpt: illegal method access (call Lcom/google/ads/AdRequest;.<init> ()V from Lcom/adtech/mobilesdk/publisher/mediation/admob/AdmobConfiguration;)
05-02 09:29:08.271: D/dalvikvm(2530): DexOpt: couldn't find field Landroid/content/res/Configuration;.smallestScreenWidthDp
05-02 09:29:08.721: I/dalvikvm(2530): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Hex;'
05-02 09:29:08.801: D/dalvikvm(2530): DexOpt: couldn't find static field
05-02 09:29:08.921: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/Decoder;': multiple definitions
05-02 09:29:08.921: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/DecoderException;': multiple definitions
05-02 09:29:08.921: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/Encoder;': multiple definitions
05-02 09:29:08.921: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/EncoderException;': multiple definitions
05-02 09:29:08.921: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/StringEncoderComparator;': multiple definitions
05-02 09:29:08.921: I/dalvikvm(2530): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Hex;'
05-02 09:29:08.931: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/language/DoubleMetaphone$DoubleMetaphoneResult;': multiple definitions
05-02 09:29:08.931: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/language/SoundexUtils;': multiple definitions
05-02 09:29:08.941: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/net/RFC1522Codec;': multiple definitions
05-02 09:29:08.941: I/dalvikvm(2530): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/DecoderException;'
05-02 09:29:10.001: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/BinaryDecoder;': multiple definitions
05-02 09:29:10.001: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/BinaryEncoder;': multiple definitions
05-02 09:29:10.001: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/StringDecoder;': multiple definitions
05-02 09:29:10.001: D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/StringEncoder;': multiple definitions
05-02 09:29:10.001: I/dalvikvm(2530): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Base64;'
05-02 09:29:10.001: I/dalvikvm(2530): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Base64;'
05-02 09:29:10.341: E/dalvikvm(2530): LinearAlloc exceeded capacity (5242880), last=728
05-02 09:29:10.341: E/dalvikvm(2530): VM aborting
05-02 09:29:10.448: I/DEBUG(120): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-02 09:29:10.448: I/DEBUG(120): Build fingerprint: 'SEMC/LT15i_1247-1044/LT15i:2.3.4/4.0.2.A.0.69/uv_v3w:user/release-keys'
05-02 09:29:10.448: I/DEBUG(120): pid: 2530, tid: 2530  >>> /system/bin/dexopt <<<
05-02 09:29:10.448: I/DEBUG(120): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
05-02 09:29:10.448: I/DEBUG(120):  r0 fffffe84  r1 deadd00d  r2 00000026  r3 00000000
05-02 09:29:10.448: I/DEBUG(120):  r4 6ca9f600  r5 004ffee4  r6 005001c4  r7 0001a82c
05-02 09:29:10.448: I/DEBUG(120):  r8 000002d8  r9 00000000  10 0000000e  fp 000560a8
05-02 09:29:10.448: I/DEBUG(120):  ip 6ca9f70c  sp 7eea9740  lr 6fd192b9  pc 6ca402c8  cpsr 20000030
05-02 09:29:10.448: I/DEBUG(120):  d0  6472656767756265  d1  746963617061636e
05-02 09:29:10.448: I/DEBUG(120):  d2  0000000600000067  d3  2ab070600000000a
05-02 09:29:10.448: I/DEBUG(120):  d4  2acb49782ab07060  d5  0000000800000002
05-02 09:29:10.448: I/DEBUG(120):  d6  2ab088302ac5d248  d7  0000000c2ac880f0
05-02 09:29:10.448: I/DEBUG(120):  d8  0000020c0db232fe  d9  0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d10 0000000000000000  d11 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d12 0000000000000000  d13 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d14 0000000000000000  d15 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d16 0000000000000000  d17 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d18 0000000000000000  d19 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d20 0000000000000000  d21 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d22 0000000000000000  d23 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d24 0000000000000000  d25 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d26 0000000000000000  d27 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d28 0000000000000000  d29 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  d30 0000000000000000  d31 0000000000000000
05-02 09:29:10.448: I/DEBUG(120):  scr 00000000
05-02 09:29:10.471: I/DEBUG(120):          #00  pc 000402c8  /system/lib/libdvm.so
05-02 09:29:10.471: I/DEBUG(120):          #01  pc 0004846e  /system/lib/libdvm.so
05-02 09:29:10.471: I/DEBUG(120):          #02  pc 00064a84  /system/lib/libdvm.so
05-02 09:29:10.471: I/DEBUG(120):          #03  pc 00064e90  /system/lib/libdvm.so
05-02 09:29:10.471: I/DEBUG(120):          #04  pc 000656bc  /system/lib/libdvm.so
05-02 09:29:10.471: I/DEBUG(120):          #05  pc 000658fe  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #06  pc 0006513e  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #07  pc 0005712c  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #08  pc 0005349a  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #09  pc 000553c2  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #10  pc 000555fe  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #11  pc 00056fd0  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #12  pc 00057022  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #13  pc 00055e4e  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #14  pc 00055efc  /system/lib/libdvm.so
05-02 09:29:10.481: I/DEBUG(120):          #15  pc 00056000  /system/lib/libdvm.so
05-02 09:29:10.491: I/DEBUG(120): code around pc:
05-02 09:29:10.491: I/DEBUG(120): 6ca402a8 447a4479 f7d14c0b 2000e982 ea86f7d1
05-02 09:29:10.491: I/DEBUG(120): 6ca402b8 447c4809 6bdb5823 4798b103 22264902
05-02 09:29:10.491: I/DEBUG(120): 6ca402c8 f7d1700a bf00eaee deadd00d 00043947
05-02 09:29:10.491: I/DEBUG(120): 6ca402d8 00045505 0005f342 fffffe84 4b09b40e
05-02 09:29:10.491: I/DEBUG(120): 6ca402e8 4c09b517 aa05447b f852591b 6b5b1b04
05-02 09:29:10.491: I/DEBUG(120): code around lr:
05-02 09:29:10.491: I/DEBUG(120): 6fd19298 4a0e4b0d e92d447b 589c41f0 26004680
05-02 09:29:10.491: I/DEBUG(120): 6fd192a8 686768a5 f9b5e006 b113300c 47c04628
05-02 09:29:10.491: I/DEBUG(120): 6fd192b8 35544306 37fff117 6824d5f5 d1ef2c00
05-02 09:29:10.491: I/DEBUG(120): 6fd192c8 e8bd4630 bf0081f0 00028284 ffffff88
05-02 09:29:10.491: I/DEBUG(120): 6fd192d8 b086b570 f602fb01 9004460c a804a901
05-02 09:29:10.491: I/DEBUG(120): stack:
05-02 09:29:10.491: I/DEBUG(120):     7eea9700  2ab06280  
05-02 09:29:10.491: I/DEBUG(120):     7eea9704  2acc3620  
05-02 09:29:10.491: I/DEBUG(120):     7eea9708  6caa51a0  
05-02 09:29:10.491: I/DEBUG(120):     7eea970c  6ca9f600  
05-02 09:29:10.491: I/DEBUG(120):     7eea9710  6fd4272c  
05-02 09:29:10.491: I/DEBUG(120):     7eea9714  6fd426d8  
05-02 09:29:10.491: I/DEBUG(120):     7eea9718  00000000  
05-02 09:29:10.491: I/DEBUG(120):     7eea971c  6fd192b9  /system/lib/libc.so
05-02 09:29:10.491: I/DEBUG(120):     7eea9720  0005f342  
05-02 09:29:10.491: I/DEBUG(120):     7eea9724  004ffee4  
05-02 09:29:10.491: I/DEBUG(120):     7eea9728  005001c4  
05-02 09:29:10.491: I/DEBUG(120):     7eea972c  0001a82c  
05-02 09:29:10.491: I/DEBUG(120):     7eea9730  000002d8  
05-02 09:29:10.491: I/DEBUG(120):     7eea9734  6fd183b1  /system/lib/libc.so
05-02 09:29:10.491: I/DEBUG(120):     7eea9738  df002777  
05-02 09:29:10.491: I/DEBUG(120):     7eea973c  e3a070ad  
05-02 09:29:10.491: I/DEBUG(120): #00 7eea9740  0001a828  
05-02 09:29:10.491: I/DEBUG(120):     7eea9744  6ca48473  /system/lib/libdvm.so
05-02 09:29:10.491: I/DEBUG(120): #01 7eea9748  000002d8  
05-02 09:29:10.491: I/DEBUG(120):     7eea974c  000002d8  
05-02 09:29:10.491: I/DEBUG(120):     7eea9750  2ce60443  
05-02 09:29:10.491: I/DEBUG(120):     7eea9754  2acc3620  
05-02 09:29:10.491: I/DEBUG(120):     7eea9758  000560a8  
05-02 09:29:10.491: I/DEBUG(120):     7eea975c  2c8a5190  
05-02 09:29:10.491: I/DEBUG(120):     7eea9760  7eea97d8  
05-02 09:29:10.501: I/DEBUG(120):     7eea9764  00000000  
05-02 09:29:10.501: I/DEBUG(120):     7eea9768  0000000e  
05-02 09:29:10.501: I/DEBUG(120):     7eea976c  6ca64a89  /system/lib/libdvm.so
05-02 09:29:10.531: W/installd(126): DexInv: --- END '/data/app/com.netbiscuits.kicker-1.apk' --- status=0x000b, process failed
05-02 09:29:10.531: E/installd(126): dexopt failed on '/data/dalvik-cache/data@app@com.netbiscuits.kicker-1.apk@classes.dex' res = 11
05-02 09:29:10.541: W/PackageManager(279): Package couldn't be installed in /data/app/com.netbiscuits.kicker-1.apk
05-02 09:29:10.541: I/BootReceiver(279): Copying /data/tombstones/tombstone_07 to DropBox (SYSTEM_TOMBSTONE)
05-02 09:29:10.641: D/dalvikvm(279): GC_EXPLICIT freed 1059K, 34% free 10358K/15623K, external 4874K/6087K, paused 90ms
05-02 09:29:10.671: D/AndroidRuntime(2519): Shutting down VM
05-02 09:29:10.671: D/dalvikvm(2519): GC_CONCURRENT freed 215K, 71% free 304K/1024K, external 0K/0K, paused 0ms+1ms
05-02 09:29:10.671: D/dalvikvm(2519): Debugger has detached; object registry had 1 entries
05-02 09:29:11.411: I/iddd-events(129): Event com.sonyericsson.idd.probe.android.devicemonitor::ApplicationCrash was discarded since it was not active.

Я также пытался установить подписанный APK прямо из Google Play Store. Это не удалось с сообщением об ошибке: "Файл пакета недействителен".

Проблема, кажется, появляется только на горстке устройств Android 2.3.x, и я понятия не имею, почему. Я не использую нативный код NDK, и я уже проверил, есть ли в библиотеке где-то Apache Commons, но я не нашел ничего ненормального.

Любое предложение?

4 ответа

Решение

Проблема заключалась в том, что версия apache commons, которую я указал для этого проекта (maven), отличалась (более новая) от той, которая уже интегрирована в Android 2.x . Это вызвало эту ошибку:

D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/Decoder;': multiple definitions

Поэтому я удалил зависимость от apache common и заменил ее собственной реализацией. Я думаю, вы могли бы также упаковать более новые общие классы Apache в ваш пакет приложений или попробовать поиграть с предоставленной областью действия...

Определение проблемы

Во время стандартной установки запускается программа dexopt, которая подготавливает ваше приложение для конкретного телефона, на котором оно установлено. Dexopt использует буфер фиксированного размера (называемый буфером "LinearAlloc") для хранения информации обо всех методах в вашем приложении. Последние версии Android используют буфер 8 или 16 МБ, но Froyo и Gingerbread (версии 2.2 и 2.3) имеют только 5 МБ. Поскольку более старые версии Android имеют относительно небольшой буфер, наше большое количество методов превышало размер буфера и вызывало сбой dexopt.

Это ошибка для вашей проблемы

Решения:

  1. Proguard: Proguard удаляет несвязанные классы / методы из вашего приложения. Таким образом размер файла dex вашего приложения уменьшается. (Я решил мою проблему с Proguard)
  2. Несколько файлов Dex: разделите ваше приложение на несколько файлов Dex. У Facebook есть решение для этого. Также прочитайте эту ссылку для управления несколькими файлами dex.

Ваша проблема в том, что API, который вы определили в настройках своего проекта, должен быть совместимым для правильной работы с версией вашего телефона, которая должна соответствовать или поддерживаться версией сборки APK, которую вы используете в данный момент. Итак, проверьте AndroidManifest.xml и включенные настройки.jar для совместимости API. Хороший способ обезопасить себя и избежать головной боли - это опубликовать несколько APK.

введите описание изображения здесь

Как только вы решите опубликовать несколько APK, вам, вероятно, потребуется создать отдельные проекты Android для каждого APK, который вы собираетесь опубликовать, чтобы вы могли соответствующим образом разработать их отдельно. Вы можете сделать это, просто продублировав существующий проект и присвоив ему новое имя. В качестве альтернативы вы можете использовать систему сборки, которая может выводить различные ресурсы - например, текстуры - в зависимости от конфигурации сборки.

введите описание изображения здесь

Одним из способов избежать дублирования больших частей кода вашего приложения является использование проекта библиотеки. Библиотечный проект содержит общий код и ресурсы, которые вы можете включить в свои реальные проекты приложений.

http://www.technotalkative.com/wp-content/uploads/2013/06/volley-library.png

При создании нескольких проектов для одного и того же приложения рекомендуется идентифицировать каждый из них именем, указывающим на ограничения устройства, которые будут наложены на APK, чтобы их можно было легко идентифицировать. Например, "myAPP08" может быть хорошим названием для приложения, разработанного для API уровня 8 и выше.

введите описание изображения здесь

Чтобы активировать несколько APK в консоли разработчика для Android Market, убедитесь, что у вас есть соответствующие версии APK, соответствующие вашим версиям Android. Использование проекта библиотеки - это дополнительный шаг, который поможет вам обеспечить качество и избежать проблем совместимости при подготовке к выпуску вашего приложения. Чем тщательнее и внимательнее обращают внимание на детали, тем лучше.

введите описание изображения здесь

В конце концов, самое главное, что ваш APK будет надежным и будет работать на большем количестве различных устройств.

Ошибка Package has mismatched uid: 10124 on disk, 10134 in settings вызвано существующей папкой /data/data/xyz/ где xyz это название вашего пакета приложений.

В этой папке сообщений существует и владелец другого (10124) от установленного в настоящее время (10134). Это вызвано предыдущей нечистой установкой.

Например, предыдущая установка завершилась с некоторыми ошибками и не удаляет созданные папки.

Потому что в папке могут быть данные из другого приложения, андроид не может позволить его использовать. PackageManager попробуйте исправить это по-разному, но если не можете этого сделать - он получит другое приложение и покажет это сообщение.

Лучшее решение - установите приложение и уберите его. После этого установите его снова.

Другое решение - удалить папку /data/data/xyz/ в какой-то степени. Может быть, вам нужен рут для этого.

Код от PackageManager (комментарии могут быть очень полезными):

            // This is a normal package, need to make its data directory.
        dataPath = getDataPathForPackage(pkg.packageName, 0);

        boolean uidError = false;

        if (dataPath.exists()) {
            // XXX should really do this check for each user.
            mOutPermissions[1] = 0;
            FileUtils.getPermissions(dataPath.getPath(), mOutPermissions);

            // If we have mismatched owners for the data path, we have a problem.
            if (mOutPermissions[1] != pkg.applicationInfo.uid) {
                boolean recovered = false;
                if (mOutPermissions[1] == 0) {
                    // The directory somehow became owned by root.  Wow.
                    // This is probably because the system was stopped while
                    // installd was in the middle of messing with its libs
                    // directory.  Ask installd to fix that.
                    int ret = mInstaller.fixUid(pkgName, pkg.applicationInfo.uid,
                            pkg.applicationInfo.uid);
                    if (ret >= 0) {
                        recovered = true;
                        String msg = "Package " + pkg.packageName
                                + " unexpectedly changed to uid 0; recovered to " +
                                + pkg.applicationInfo.uid;
                        reportSettingsProblem(Log.WARN, msg);
                    }
                }
                if (!recovered && ((parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0
                        || (scanMode&SCAN_BOOTING) != 0)) {
                    // If this is a system app, we can at least delete its
                    // current data so the application will still work.
                    int ret = mInstaller.remove(pkgName, 0);
                    if (ret >= 0) {
                        // TODO: Kill the processes first
                        // Remove the data directories for all users
                        sUserManager.removePackageForAllUsers(pkgName);
                        // Old data gone!
                        String prefix = (parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0
                                ? "System package " : "Third party package ";
                        String msg = prefix + pkg.packageName
                                + " has changed from uid: "
                                + mOutPermissions[1] + " to "
                                + pkg.applicationInfo.uid + "; old data erased";
                        reportSettingsProblem(Log.WARN, msg);
                        recovered = true;

                        // And now re-install the app.
                        ret = mInstaller.install(pkgName, pkg.applicationInfo.uid,
                                pkg.applicationInfo.uid);
                        if (ret == -1) {
                            // Ack should not happen!
                            msg = prefix + pkg.packageName
                                    + " could not have data directory re-created after delete.";
                            reportSettingsProblem(Log.WARN, msg);
                            mLastScanError = PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE;
                            return null;
                        }
                        // Create data directories for all users
                        sUserManager.installPackageForAllUsers(pkgName,
                                pkg.applicationInfo.uid);
                    }
                    if (!recovered) {
                        mHasSystemUidErrors = true;
                    }
                } else if (!recovered) {
                    // If we allow this install to proceed, we will be broken.
                    // Abort, abort!
                    mLastScanError = PackageManager.INSTALL_FAILED_UID_CHANGED;
                    return null;
                }
                if (!recovered) {
                    pkg.applicationInfo.dataDir = "/mismatched_uid/settings_"
                        + pkg.applicationInfo.uid + "/fs_"
                        + mOutPermissions[1];
                    pkg.applicationInfo.nativeLibraryDir = pkg.applicationInfo.dataDir;
                    String msg = "Package " + pkg.packageName
                            + " has mismatched uid: "
                            + mOutPermissions[1] + " on disk, "
                            + pkg.applicationInfo.uid + " in settings";
                    // writer
                    synchronized (mPackages) {
                        mSettings.mReadMessages.append(msg);
                        mSettings.mReadMessages.append('\n');
                        uidError = true;
                        if (!pkgSetting.uidError) {
                            reportSettingsProblem(Log.ERROR, msg);
                        }
                    }
                }
            }
            pkg.applicationInfo.dataDir = dataPath.getPath(); 
Другие вопросы по тегам