From 48f05d29f398576c76b2c3b47a22f4e44e8919fc Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Mon, 12 May 2014 22:13:02 -0700 Subject: [PATCH] Add better error message for AAPT file conflicts Some resource directories may be the same even though their names are different. For instance, the "smallest width" qualifier was added in API 13, so the resource directory "values-sw600dp" and "values-sw600dp-v13" are the same and cause a conflict. The error reports that this might be the case. Change-Id: Ia35f1d670edd48265b3a7fe3d55656128421f612 --- tools/aapt/AaptAssets.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/aapt/AaptAssets.cpp b/tools/aapt/AaptAssets.cpp index eead68c940cf3..b44e2d139a950 100644 --- a/tools/aapt/AaptAssets.cpp +++ b/tools/aapt/AaptAssets.cpp @@ -561,15 +561,17 @@ status_t AaptGroup::addFile(const sp& file, const bool overwriteDuplic return NO_ERROR; } -#if 0 - printf("Error adding file %s: group %s already exists in leaf=%s path=%s\n", - file->getSourceFile().string(), - file->getGroupEntry().toDirName(String8()).string(), - mLeaf.string(), mPath.string()); -#endif + // Check if the version is automatically applied. This is a common source of + // error. + ConfigDescription withoutVersion = file->getGroupEntry().toParams(); + withoutVersion.version = 0; + AaptConfig::applyVersionForCompatibility(&withoutVersion); - SourcePos(file->getSourceFile(), -1).error("Duplicate file.\n%s: Original is here.", - getPrintableSource().string()); + const sp& originalFile = mFiles.valueAt(index); + SourcePos(file->getSourceFile(), -1) + .error("Duplicate file.\n%s: Original is here. %s", + originalFile->getPrintableSource().string(), + (withoutVersion.version != 0) ? "The version qualifier may be implied." : ""); return UNKNOWN_ERROR; }