Fix incorrect odex path handling

It's wrong to just concatenate the apk_path and .odex.
The bug prevents the prebuilt odex being used since Kitkat.

The patch is copied from the code of JellyBean.

Change-Id: I0ce8a877e3df8ae1ab9a0e3aeeef2d5253efc223
This commit is contained in:
Chih-Wei Huang 2014-04-28 15:47:45 +08:00 committed by Brian Carlstrom
parent 3f0d5669eb
commit 0e8ae16f08

View File

@ -685,10 +685,14 @@ int dexopt(const char *apk_path, uid_t uid, int is_public,
/* Before anything else: is there a .odex file? If so, we have /* Before anything else: is there a .odex file? If so, we have
* precompiled the apk and there is nothing to do here. * precompiled the apk and there is nothing to do here.
*/ */
sprintf(out_path, "%s%s", apk_path, ".odex"); strcpy(out_path, apk_path);
end = strrchr(out_path, '.');
if (end != NULL) {
strcpy(end, ".odex");
if (stat(out_path, &dex_stat) == 0) { if (stat(out_path, &dex_stat) == 0) {
return 0; return 0;
} }
}
if (create_cache_path(out_path, apk_path)) { if (create_cache_path(out_path, apk_path)) {
return -1; return -1;