Add dependency generation to Aapt for R.java

Make Aapt generate a dependency file in the location specified
by RClassDir for R.java if the --generate-dependencies flag is set.
This dependency file is then read by the ant exec loop task
to see whether to recreate R.java.

Change-Id: I7152dac86b6ea0e448ef65e3a95694afe233c789
This commit is contained in:
Josiah Gaskin
2011-06-14 13:57:09 -07:00
parent ce89f1531e
commit 9bf34ca6f8
8 changed files with 111 additions and 19 deletions

View File

@ -1393,10 +1393,10 @@ status_t AaptDir::addLeafFile(const String8& leafName, const sp<AaptFile>& file)
}
ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir,
const AaptGroupEntry& kind, const String8& resType)
const AaptGroupEntry& kind, const String8& resType,
sp<FilePathStore>& fullResPaths)
{
Vector<String8> fileNames;
{
DIR* dir = NULL;
@ -1419,9 +1419,14 @@ ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir,
if (isHidden(srcDir.string(), entry->d_name))
continue;
fileNames.add(String8(entry->d_name));
String8 name(entry->d_name);
fileNames.add(name);
// Add fully qualified path for dependency purposes
// if we're collecting them
if (fullResPaths != NULL) {
fullResPaths->add(srcDir.appendPathCopy(name));
}
}
closedir(dir);
}
@ -1448,7 +1453,7 @@ ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir,
notAdded = true;
}
ssize_t res = subdir->slurpFullTree(bundle, pathName, kind,
resType);
resType, fullResPaths);
if (res < NO_ERROR) {
return res;
}
@ -1680,7 +1685,7 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle)
sp<AaptDir> assetAaptDir = makeDir(String8(kAssetDir));
AaptGroupEntry group;
count = assetAaptDir->slurpFullTree(bundle, assetRoot, group,
String8());
String8(), mFullResPaths);
if (count < 0) {
totalCount = count;
goto bail;
@ -1711,6 +1716,7 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle)
sp<AaptAssets> nextOverlay = new AaptAssets();
current->setOverlay(nextOverlay);
current = nextOverlay;
current->setFullResPaths(mFullResPaths);
}
count = current->slurpResourceTree(bundle, String8(res));
@ -1753,7 +1759,7 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle)
* guarantees about ordering, so we're okay with an inorder search
* using whatever order the OS happens to hand back to us.
*/
count = slurpFullTree(bundle, assetRoot, AaptGroupEntry(), String8());
count = slurpFullTree(bundle, assetRoot, AaptGroupEntry(), String8(), mFullResPaths);
if (count < 0) {
/* failure; report error and remove archive */
totalCount = count;
@ -1779,9 +1785,10 @@ bail:
ssize_t AaptAssets::slurpFullTree(Bundle* bundle, const String8& srcDir,
const AaptGroupEntry& kind,
const String8& resType)
const String8& resType,
sp<FilePathStore>& fullResPaths)
{
ssize_t res = AaptDir::slurpFullTree(bundle, srcDir, kind, resType);
ssize_t res = AaptDir::slurpFullTree(bundle, srcDir, kind, resType, fullResPaths);
if (res > 0) {
mGroupEntries.add(kind);
}
@ -1843,7 +1850,7 @@ ssize_t AaptAssets::slurpResourceTree(Bundle* bundle, const String8& srcDir)
if (type == kFileTypeDirectory) {
sp<AaptDir> dir = makeDir(String8(entry->d_name));
ssize_t res = dir->slurpFullTree(bundle, subdirName, group,
resType);
resType, mFullResPaths);
if (res < 0) {
count = res;
goto bail;