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,15 +45,20 @@ 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);
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