2121
2222const char * const RESOURCES_ROOT_NAMESPACE = " http://schemas.android.com/apk/res/" ;
2323const 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" ;
2425const char * const RESOURCES_ROOT_PRV_NAMESPACE = " http://schemas.android.com/apk/prv/res/" ;
2526
2627const char * const XLIFF_XMLNS = " urn:oasis:names:tc:xliff:document:1.2" ;
@@ -44,16 +45,21 @@ bool isWhitespace(const char16_t* str)
4445}
4546
4647static const String16 RESOURCES_PREFIX (RESOURCES_ROOT_NAMESPACE);
48+ static const String16 RESOURCES_PREFIX_AUTO_PACKAGE (RESOURCES_AUTO_PACKAGE_NAMESPACE);
4749static const String16 RESOURCES_PRV_PREFIX (RESOURCES_ROOT_PRV_NAMESPACE);
4850static const String16 RESOURCES_TOOLS_NAMESPACE (" http://schemas.android.com/tools" );
4951
50- String16 getNamespaceResourcePackage (String16 namespaceUri, bool * outIsPublic)
52+ String16 getNamespaceResourcePackage (String16 appPackage, String16 namespaceUri, bool * outIsPublic)
5153{
5254 // printf("%s starts with %s?\n", String8(namespaceUri).string(),
5355 // String8(RESOURCES_PREFIX).string());
5456 size_t prefixSize;
5557 bool isPublic = true ;
56- if (namespaceUri.startsWith (RESOURCES_PREFIX)) {
58+ if (namespaceUri.startsWith (RESOURCES_PREFIX_AUTO_PACKAGE)) {
59+ NOISY (printf (" Using default application package: %s -> %s\n " , String8 (namespaceUri).string (), String8 (appPackage).string ()));
60+ isPublic = true ;
61+ return appPackage;
62+ } else if (namespaceUri.startsWith (RESOURCES_PREFIX)) {
5763 prefixSize = RESOURCES_PREFIX.size ();
5864 } else if (namespaceUri.startsWith (RESOURCES_PRV_PREFIX)) {
5965 isPublic = false ;
@@ -926,7 +932,7 @@ status_t XMLNode::assignResourceIds(const sp<AaptAssets>& assets,
926932 const attribute_entry& e = mAttributes .itemAt (i);
927933 if (e.ns .size () <= 0 ) continue ;
928934 bool nsIsPublic;
929- String16 pkg (getNamespaceResourcePackage (e.ns , &nsIsPublic));
935+ String16 pkg (getNamespaceResourcePackage (String16 (assets-> getPackage ()), e.ns , &nsIsPublic));
930936 NOISY (printf (" Elem %s %s=\" %s\" : namespace(%s) %s ===> %s\n " ,
931937 String8 (getElementName ()).string (),
932938 String8 (e.name ).string (),
0 commit comments