Android 在 dalvik 缓存中制作 apk 的重复 .dex 文件

Android making duplicate .dex files of apk's in dalvik-cache

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

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

请帮忙...

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

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() 问题已解决