2014-05-02 65 views
18

我有我的應用程序之一的Android 2.3.x版本的設備(包名是com.netbiscuits.kicker)的一些問題。但是我無法安裝我的APK。我曾試圖直接從日食(調試密鑰庫)以下消息在logcat的安裝:包不匹配的UID:10124磁盤上,在10134設置

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/[email protected]@[email protected]' 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簽署Play商店。失敗的錯誤消息:「包文件無效」。

這個問題似乎只能在Android 2.3.x版本設備的少數出現,我完全不知道爲什麼。我不使用本機NDK代碼,並且我已經檢查過某個庫是否包含Apache Commons,但是我沒有發現任何異常。

有什麼建議嗎?

+0

你添加或更改'的Android? – CommonsWare

+0

我沒有在我的Android清單中設置此標誌。然而,我正在從事已有的(在google play store中發佈)應用程序的更新(從頭開始構建),我無法訪問「舊的」Android Manifest。你認爲這可能是問題嗎? – sockeqwe

+0

那麼,不同的'android:sharedUserId'肯定會導致不同的UID。如果原始應用程序設置了「android:sharedUserId」,則需要匹配其值。可能還有其他的東西會導致你的困難 - 這只是看到你的問題時腦海中浮現出來的一種情況。 – CommonsWare

回答

0

問題是我爲這個項目(maven)指定的apache commons版本與已經集成在Android 2.x中的版本不同(更新)。這導致了這個錯誤:

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

所以我已經刪除了依賴到Apache普通,並用我自己的實現取代它。我想你也可以重新包裝的新阿帕奇公共類到您的應用程序包或嘗試玩弄提供範圍...

7

你的問題是,您在項目設置中定義的API必須是兼容的正確與您的手機版本,它必須匹配或由APK建立你目前正在使用的版本支持的工作。因此,請檢查AndroidManifest.xml幷包含.jar設置以實現API兼容性。一個安全和避免這種頭痛的好方法是發佈多個APKs

enter image description here

一旦你決定要發佈多個APK,您可能需要爲每個APK獨立的Android項目,你打算公佈,這樣就可以適當地單獨開發它們。你可以通過簡單地複製你現有的項目並給它一個新的名字來完成。或者,您可以使用構建系統,該構建系統可以根據構建配置輸出不同的資源(如紋理)。避免重複的應用程序代碼大部分

enter image description here

的一種方法是使用library項目。 A library project保存共享的代碼和資源,您可以將其包含在實際的應用程序項目中。

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

當同一個應用程序創建多個項目,這是一個很好的做法,以確定與指示裝置限制放置在APK,所以你可以很容易地識別他們的名字各一個。例如,「myAPP08」可能是設計用於API級別8及以上的應用程序的良好名稱。

enter image description here

要激活Android Market的開發者控制檯多個APK,確保您在提供APK版本,以配合你心目中的的Android版本。在準備release您的應用程序時,使用庫項目是幫助您確保質量並避免兼容性問題的額外步驟。注意details越仔細和熱心,越好。

enter image description here

最後,最重要的是,你APK將是可靠的,並順利在不同設備上的一個較大的數目運行。

8

問題定義

在標準安裝,一個名爲「dexopt」程序運行到 準備您的應用程序爲它安裝在特定的手機。 Dexopt使用固定大小的緩衝區(稱爲「LinearAlloc」緩衝區)來存儲有關應用中所有方法的信息。 最近的 Android版本使用8或16 MB緩存,但Froyo和 薑餅(版本2.2和2.3)只有5 MB。由於較舊的 版本的Android具有相對較小的緩衝區,因此我們的大量方法 超過了緩衝區大小並導致dexopt崩潰。

This is the bug for your issue

解決方案:

  1. Proguard的: Proguard的去除您的應用程序未引用的類/方法。因此,您的應用程序的dex文件大小減小。 (我已經解決了我的問題 使用ProGuard)
  2. 多敏捷文件:分裂您的應用到多個DEX文件。 Facebook有a solution for this。還請閱讀此link以管理多個dex文件。
+0

我將檢查proguard解決方案 – sockeqwe

0

錯誤Package has mismatched uid: 10124 on disk, 10134 in settings造成存在的文件夾/data/data/xyz/其中xyz是你的應用程序包名稱。

在此消息文件夾中存在並具有與現在安裝的(10134)不同的所有者(10124)。它是由以前的不潔安裝引起的。

例如,以前的安裝失敗,出現一些錯誤,不要刪除創建的文件夾。

因爲在文件夾中可以從其他應用程序的數據android不能使用它。 PackageManager嘗試以不同的方式修復它,但如果不能這樣做 - 它會得到不同的應用程序目錄並顯示此消息。

更好的解決方案 - 安裝應用程序並清理刪除它。之後,再次安裝它。

另一種解決方案 - 在某些方面刪除文件夾/data/data/xyz/。可能是你需要這個根。從PackageManager

代碼(評論可能是非常有益的):發佈應用後sharedUserId`:

  // 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();