Android在dalvik-cache中制作了apk的重复.dex文件

时间:2015-02-09 10:59:07

标签: android android-source dalvik

我正在开发基于在自定义硬件上运行的Android AOSP 4.4.2的产品。我有一个单独的分区/opt,我的apk已存储在/opt/harsh/app/中。我还有一个符号链接/vendor,它指向/opt/harsh(根据设计结构,这是必需的)。

我面临的问题是/data/dalvik-cache/opt/harsh/app/*.apk/vendor/app/*.apk创建了多个.dex文件,它们是相同的文件,但这两个文件都是.dex文件具有不同的用户组。因此我的应用程序运行不正常。如果我更改为不创建/opt分区而只创建/vendor分区而不是symlink并将apk放入其中,那么一切正常。

请帮忙......

1 个答案:

答案 0 :(得分:1)

最后我自己解决了这个问题!

libcore / dalvik / src / main / java / dalvik / system / DexFile.java中存在一个导致此问题的错误。这个函数在这里:

private static int openDexFile(String sourceName, String outputName,
    int flags) throws IOException {
    return openDexFileNative(new File(sourceName).getCanonicalPath(),
                             (outputName == null) ? null : new File(outputName).getCanonicalPath(),
                             flags);
}

问题出在new File(sourceName).getCanonicalPath()

将问题更改为new File(sourceName).getAbsolutePath(),问题就解决了