Skip to content

Commit 63e43ba

Browse files
Jean-Baptiste Queruandroid code review
authored andcommitted
Merge "Fix for issue 9656 - custom xml attributes in Android Libraries"
2 parents 69e9c30 + e348909 commit 63e43ba

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

tools/aapt/XMLNode.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
const char* const RESOURCES_ROOT_NAMESPACE = "http://schemas.android.com/apk/res/";
2323
const char* const RESOURCES_ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android";
24+
const char* const RESOURCES_AUTO_PACKAGE_NAMESPACE = "http://schemas.android.com/apk/res/auto";
2425
const char* const RESOURCES_ROOT_PRV_NAMESPACE = "http://schemas.android.com/apk/prv/res/";
2526

2627
const char* const XLIFF_XMLNS = "urn:oasis:names:tc:xliff:document:1.2";
@@ -44,15 +45,20 @@ bool isWhitespace(const char16_t* str)
4445
}
4546

4647
static const String16 RESOURCES_PREFIX(RESOURCES_ROOT_NAMESPACE);
48+
static const String16 RESOURCES_PREFIX_AUTO_PACKAGE(RESOURCES_AUTO_PACKAGE_NAMESPACE);
4749
static const String16 RESOURCES_PRV_PREFIX(RESOURCES_ROOT_PRV_NAMESPACE);
4850

49-
String16 getNamespaceResourcePackage(String16 namespaceUri, bool* outIsPublic)
51+
String16 getNamespaceResourcePackage(String16 appPackage, String16 namespaceUri, bool* outIsPublic)
5052
{
5153
//printf("%s starts with %s?\n", String8(namespaceUri).string(),
5254
// String8(RESOURCES_PREFIX).string());
5355
size_t prefixSize;
5456
bool isPublic = true;
55-
if (namespaceUri.startsWith(RESOURCES_PREFIX)) {
57+
if(namespaceUri.startsWith(RESOURCES_PREFIX_AUTO_PACKAGE)) {
58+
NOISY(printf("Using default application package: %s -> %s\n", String8(namespaceUri).string(), String8(appPackage).string()));
59+
isPublic = true;
60+
return appPackage;
61+
} else if (namespaceUri.startsWith(RESOURCES_PREFIX)) {
5662
prefixSize = RESOURCES_PREFIX.size();
5763
} else if (namespaceUri.startsWith(RESOURCES_PRV_PREFIX)) {
5864
isPublic = false;
@@ -922,7 +928,7 @@ status_t XMLNode::assignResourceIds(const sp<AaptAssets>& assets,
922928
const attribute_entry& e = mAttributes.itemAt(i);
923929
if (e.ns.size() <= 0) continue;
924930
bool nsIsPublic;
925-
String16 pkg(getNamespaceResourcePackage(e.ns, &nsIsPublic));
931+
String16 pkg(getNamespaceResourcePackage(String16(assets->getPackage()), e.ns, &nsIsPublic));
926932
NOISY(printf("Elem %s %s=\"%s\": namespace(%s) %s ===> %s\n",
927933
String8(getElementName()).string(),
928934
String8(e.name).string(),

0 commit comments

Comments
 (0)