X-Git-Url: https://git.saurik.com/android/aapt.git/blobdiff_plain/681e0c62435715da0dde10840e2fce4ebed23aed..241f5166e5796ba397e401727dcc7f5d78245e71:/Resource.cpp
diff --git a/Resource.cpp b/Resource.cpp
index 1084992..20b0bf4 100644
--- a/Resource.cpp
+++ b/Resource.cpp
@@ -1285,10 +1285,10 @@ static status_t writeLayoutClasses(
hasTable = true;
fprintf(fp,
"%s
Includes the following attributes:
\n"
- "%s \n"
+ "%s \n"
"%s \n"
"%s \n"
- "%s Attribute | Summary |
\n",
+ "%s Attribute | Description |
\n",
indentStr,
indentStr,
indentStr,
@@ -1322,7 +1322,7 @@ static status_t writeLayoutClasses(
}
String16 name(name8);
fixupSymbol(&name);
- fprintf(fp, "%s {@link #%s_%s %s:%s} | %s |
\n",
+ fprintf(fp, "%s {@link #%s_%s %s:%s} | %s |
\n",
indentStr, nclassName.string(),
String8(name).string(),
assets->getPackage().string(),
@@ -1727,24 +1727,34 @@ writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp& ass
depth++;
String8 tag(tree.getElementName(&len));
// printf("Depth %d tag %s\n", depth, tag.string());
+ bool keepTag = false;
if (depth == 1) {
if (tag != "manifest") {
fprintf(stderr, "ERROR: manifest does not start with tag\n");
return -1;
}
pkg = getAttribute(tree, NULL, "package", NULL);
- } else if (depth == 2 && tag == "application") {
- inApplication = true;
- }
- if (inApplication) {
- if (tag == "application" || tag == "activity" || tag == "service" || tag == "receiver"
- || tag == "provider") {
- String8 name = getAttribute(tree, "http://schemas.android.com/apk/res/android",
- "name", &error);
- if (error != "") {
- fprintf(stderr, "ERROR: %s\n", error.string());
- return -1;
- }
+ } else if (depth == 2) {
+ if (tag == "application") {
+ inApplication = true;
+ keepTag = true;
+ } else if (tag == "instrumentation") {
+ keepTag = true;
+ }
+ }
+ if (!keepTag && inApplication && depth == 3) {
+ if (tag == "activity" || tag == "service" || tag == "receiver" || tag == "provider") {
+ keepTag = true;
+ }
+ }
+ if (keepTag) {
+ String8 name = getAttribute(tree, "http://schemas.android.com/apk/res/android",
+ "name", &error);
+ if (error != "") {
+ fprintf(stderr, "ERROR: %s\n", error.string());
+ return -1;
+ }
+ if (name.length() > 0) {
// asdf --> package.asdf
// .asdf .a.b --> package.asdf package.a.b
// asdf.adsf --> asdf.asdf
@@ -1821,10 +1831,16 @@ status_t
writeProguardForLayouts(ProguardKeepSet* keep, const sp& assets)
{
status_t err;
- sp layout = assets->resDir(String8("layout"));
+ const Vector >& dirs = assets->resDirs();
+ const size_t K = dirs.size();
+ for (size_t k=0; k& d = dirs.itemAt(k);
+ const String8& dirName = d->getLeaf();
+ if ((dirName != String8("layout")) && (strncmp(dirName.string(), "layout-", 7) != 0)) {
+ continue;
+ }
- if (layout != NULL) {
- const KeyedVector > groups = layout->getFiles();
+ const KeyedVector > groups = d->getFiles();
const size_t N = groups.size();
for (size_t i=0; i& group = groups.valueAt(i);