我的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.
我还尝试直接从Google Play商店安装已签名的APK。失败并显示错误消息:“包文件无效”。
问题似乎只出现在少数Android 2.3.x设备上,我完全不知道为什么。我不使用本机NDK代码,我已经检查过某个库是否包含apache commons,但我发现没有异常。
有什么建议吗?
答案 0 :(得分:8)
问题定义
在标准安装过程中,一个名为“dexopt”的程序运行到 为正在安装的特定手机准备您的应用程序。 Dexopt使用固定大小的缓冲区(称为“LinearAlloc”缓冲区)来 存储有关您应用中所有方法的信息。最近 Android版本使用8或16 MB缓冲区,但Froyo和 Gingerbread(版本2.2和2.3)只有5 MB。因为年纪大了 Android的版本有一个相对较小的缓冲区,我们的数量很大 方法超出缓冲区大小并导致dexopt崩溃。
This is the bug for your issue
<强>解决方案:强>
答案 1 :(得分:7)
您的问题是您在项目设置中定义的API必须兼容才能正常使用您的手机版本,而手机版本必须与您当前使用的APK版本版本相匹配或受其支持。因此,请检查AndroidManifest.xml并包含.jar设置以获得API兼容性。安全避免这种头痛的好方法是发布多个APKs。
一旦您决定发布多个APK,您可能需要为要发布的每个APK创建单独的Android项目,以便您可以单独适当地开发它们。您只需复制现有项目并为其指定新名称即可。或者,您可以使用可以根据构建配置输出不同资源(例如纹理)的构建系统。
避免重复大部分应用程序代码的一种方法是使用library项目。 library project包含共享代码和资源,您可以将其包含在实际的应用程序项目中。
http://www.technotalkative.com/wp-content/uploads/2013/06/volley-library.png
为同一个应用程序创建多个项目时,最好使用一个名称来标识每个项目,该名称表示要放在APK上的设备限制,以便您轻松识别它们。例如,“myAPP08”可能是为API级别8及更高版本设计的应用程序的良好名称。
要在Android电子邮件的开发者控制台中激活多个APK,请确保您提供的APK版本与您考虑的Android版本相匹配。在准备release您的应用程序时,使用库项目是一个额外的步骤,可帮助您确保质量并避免兼容性问题。更加谨慎和热衷于关注details,越好。
最后,最重要的是您APK在大量不同的设备上可靠且运行顺畅。
答案 2 :(得分:0)
问题在于我为此项目指定的apache commons版本(maven)与已经集成在Android 2.x中的版本不同(更新)。这导致了这个错误:
D/dalvikvm(2530): DexOpt: not verifying 'Lorg/apache/commons/codec/Decoder;': multiple definitions
所以我已经删除了对apache common的依赖,并将其替换为我自己的实现。我想你也可以将更新的apache公共类重新打包到你的应用程序包中,或尝试使用提供的范围......
答案 3 :(得分:0)
由现有文件夹Package has mismatched uid: 10124 on disk, 10134 in settings
导致错误/data/data/xyz/
,其中xyz
是您的应用包名称。
在此消息文件夹中存在并且具有从现在开始安装的不同所有者(10124)(10134)。这是由以前的不洁安装造成的。
例如,之前的安装失败并出现一些错误,并且不删除已创建的文件夹。
因为在文件夹中可以将来自其他app的数据安卓不能允许使用它。PackageManager
尝试以不同的方式修复它,但如果不能这样做 - 它会获得不同的dir并显示此消息。
更好的解决方案 - 安装应用并清除它。之后再安装它。
另一种解决方案 - 以某种方式删除文件夹/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();