Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修改Android框架后Dep签名不匹配_Java_Android_Android Emulator_Android Source - Fatal编程技术网

Java 修改Android框架后Dep签名不匹配

Java 修改Android框架后Dep签名不匹配,java,android,android-emulator,android-source,Java,Android,Android Emulator,Android Source,我在Android框架(Android 4.2)中修改了PackageManagerService.java中的一些代码。生成并启动emulator后,它会报告以下错误: 10-05 08:20:34.213: I/dalvikvm(575): DexOpt: mismatch dep signature for '/system/framework/core.odex' 10-05 08:20:34.213: E/dalvikvm(575): /system/app/PackageInstal

我在Android框架(Android 4.2)中修改了PackageManagerService.java中的一些代码。生成并启动emulator后,它会报告以下错误:

10-05 08:20:34.213: I/dalvikvm(575): DexOpt: mismatch dep signature for '/system/framework/core.odex'
10-05 08:20:34.213: E/dalvikvm(575): /system/app/PackageInstaller.apk odex has stale dependencies
10-05 08:20:34.213: E/dalvikvm(575): odex source not available -- failing
10-05 08:20:34.223: W/PackageManager(575): StaleDexCacheError when reading apk: /system/app/PackageInstaller.apk
10-05 08:20:34.223: W/PackageManager(575): dalvik.system.StaleDexCacheError: /system/app/PackageInstaller.apk
10-05 08:20:34.223: W/PackageManager(575):  at dalvik.system.DexFile.isDexOptNeeded(Native Method)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.pm.PackageManagerService.performDexOptLI(PackageManagerService.java:3375)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:3960)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:3238)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.pm.PackageManagerService.scanDirLI(PackageManagerService.java:3017)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:1058)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:837)
10-05 08:20:34.223: W/PackageManager(575):  at com.android.server.ServerThread.run(SystemServer.java:177)

如果我删除这些代码行,它就会工作。我曾经在安卓2.3上工作,安卓2.3(姜饼)中仍然有签名检查,但在修改姜饼的框架后,它将永远不会报告此类错误。这是为什么?

我认为在定制ROM的构建和闪存过程中,您不会清理数据和缓存图像。在本例中,在这些图像中,存储了旧版本的
odexed core.jar
,在引导过程中,Android尝试将新版本与旧版本进行比较。因此,由于您做了一些修改,签名是不同的。

我认为在定制ROM的构建和闪存过程中,您不会清理数据和缓存图像。在本例中,在这些图像中,存储了旧版本的
odexed core.jar
,在引导过程中,Android尝试将新版本与旧版本进行比较。因此,当您做了一些修改后,签名就不同了。

我最终通过显式运行
make droidcore
解决了这个问题。

我最终通过显式运行
make droidcore
解决了这个问题

if (memcmp(signature, ptr, kSHA1DigestLen) != 0) {  
    LOGI("DexOpt: mismatch dep signature for '%s'", cacheFileName);  
    goto bail;  
}