Intereting Posts
Запуск службы при загрузке, но не все приложения для Android Javax.net.ssl.SSLException во время многозадачности Amazon S3 Программно создавать TextView с многоточием Как получить путь к папке lib для установленного пакета Анимация анимации Android 4.4 мигает при анимации вложенного представления Ошибка в Android "SuperNotCalledException: активность не вызывала super.OnCreate ()" Не удалось найти HelloAndroid.apk? OnSharedPreferenceChanged не активируется, если изменения происходят в отдельной активности? Как я могу проверить потребление сети Android для Android? Загружать приложение из Google Play программно Java, android, разрешить URL-адрес, получить перенаправленный uri Как определить ориентацию по умолчанию для кадров предварительного просмотра камеры? Использование AppCompat 'layout_behavior' с '@ string / appbar_scrolling_view_behavior' вызывает исключение Анимирование рисунка пути холста на Android В чем разница между оператором sim и оператором сети

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

У меня есть некоторые проблемы на устройствах Android 2.3.X для одного из моих приложений (имя пакета – com.netbiscuits.kicker). Однако я не могу установить APK. Я попытался установить его непосредственно из eclipse (debug keystore) со следующим сообщением в 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, но я не обнаружил ничего ненормального.

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

Solutions Collecting From Web of "Пакет имеет несоответствующий uid: 10124 на диске, 10134 в настройках"

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

Во время стандартной установки запускается программа под названием «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 будете надежными и плавно выполняйте работу на большом количестве различных устройств.

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

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

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

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

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

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

Потому что в папке могут быть данные из другого приложения, и Android не может его использовать. 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();