我正在开发基于在自定义硬件上运行的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放入其中,那么一切正常。
请帮忙......
答案 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()
,问题就解决了