From 0e25d9ae776053d9186200f2f698faea45313cb6 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Fri, 10 Mar 2017 15:14:27 -0800 Subject: [PATCH] libandroidfw: Search all packages for an identifier In order to allow multiple packages with the same package name, but different package ID, we need to keep searching packages until the resource is found. Bug: 30999713 Test: make libandroidfw_tests Change-Id: If4540e12731ca18a18e9e550a9bf248606a586c5 --- libs/androidfw/ResourceTypes.cpp | 1 - libs/androidfw/tests/data/basic/R.h | 6 +++--- .../tests/data/feature/AndroidManifest.xml | 3 ++- libs/androidfw/tests/data/feature/build | 8 +++++++- libs/androidfw/tests/data/feature/feature.apk | Bin 1373 -> 1223 bytes .../tests/data/feature/res/values/values.xml | 7 +++---- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp index b8d95e4acb5fe..359cface8b7f1 100644 --- a/libs/androidfw/ResourceTypes.cpp +++ b/libs/androidfw/ResourceTypes.cpp @@ -4765,7 +4765,6 @@ nope: && (targetTypeLen = attrPrivate.size()) ); } - break; } return 0; } diff --git a/libs/androidfw/tests/data/basic/R.h b/libs/androidfw/tests/data/basic/R.h index 8e9741efd2a30..94a2a14ced878 100644 --- a/libs/androidfw/tests/data/basic/R.h +++ b/libs/androidfw/tests/data/basic/R.h @@ -44,8 +44,8 @@ struct R { density = 0x7f030002, // From feature - test3 = 0x7f080000, - test4 = 0x7f080001, + test3 = 0x80020000, + test4 = 0x80020001, }; }; @@ -57,7 +57,7 @@ struct R { ref2 = 0x7f040003, // From feature - number3 = 0x7f090000, + number3 = 0x80030000, }; }; diff --git a/libs/androidfw/tests/data/feature/AndroidManifest.xml b/libs/androidfw/tests/data/feature/AndroidManifest.xml index c972372508be3..12ca5b6fcfd6e 100644 --- a/libs/androidfw/tests/data/feature/AndroidManifest.xml +++ b/libs/androidfw/tests/data/feature/AndroidManifest.xml @@ -15,5 +15,6 @@ --> + package="com.android.basic" + featureName="feature"> diff --git a/libs/androidfw/tests/data/feature/build b/libs/androidfw/tests/data/feature/build index 6ed3e416fb103..aa2f7169345cd 100755 --- a/libs/androidfw/tests/data/feature/build +++ b/libs/androidfw/tests/data/feature/build @@ -19,4 +19,10 @@ set -e PATH_TO_FRAMEWORK_RES=${ANDROID_BUILD_TOP}/prebuilts/sdk/current/android.jar -aapt package -M AndroidManifest.xml -S res -I $PATH_TO_FRAMEWORK_RES --feature-of ../basic/basic.apk -F feature.apk -f +aapt2 compile --dir res -o compiled.flata +aapt2 link -o feature.apk \ + --manifest AndroidManifest.xml \ + -I $PATH_TO_FRAMEWORK_RES \ + -I ../basic/basic.apk \ + --package-id 0x80 \ + compiled.flata diff --git a/libs/androidfw/tests/data/feature/feature.apk b/libs/androidfw/tests/data/feature/feature.apk index 767fed697034c54ef99d4c833c1de7e3070efd8b..a0dae380018b63da38ed87ee1599bec39544f6fd 100644 GIT binary patch literal 1223 zcmWIWW@cev-~d8~hWU&PNI)3KcFapD%Fj&kP0Y(oOD!(ZtH{kM_212P$U$I^N>-B@ zn~u((CXt;%8@GsU+^{KnayO?C@6H>)J^w8{ckrh}L0{sxXVY%(We_Zrdyv>>-5|jC zMeIj{$GMZDJ5|4@lT@_8k9=}nM!rr)ZoZhL1fUNNmW zG~;rjiPn~q>tXpzuAM1159>`)x6C?XsC=)G-7vImws>Lj?&lK0UOsjl+pTJTz1F{f zDBbqq$Gh{_hzC@wY;KzO`PY@k&uiH1jpHKk&A;g%;LXl4-RIH8eL&BJ0KFRk^*)e` z=6yZ}Muwu);{4L0M41||j`h967}KnW0*VK4#GKrRFT1yx{dAPo#p23FP* zV4xX8X`pH*1;!mf4GloKWQKf(Tn0UcM20+u6ow)oFB3@XF(d&+ih=B8pqk+f6rgFX z1WJSa3JTK@AkB>AaSbFkC`=`Qn2Euj!4OEZ0Yj<;7Ucwmx9th2nTpGf~0}+Ko!7jgPfs2r3Na%QidQ504fC-Z5eGtBG5hN|F$ zQLp1{!`5-0>7J%hT zn|mT+g0aiQKyAfIuNrHAou8u~;ypk3``_gsjPJ)YmP=LH&&zz1?%UxldiRyzx7*Cp zidi4`J@vXjW4RCO|C$4{=N9Zs*lDo0@ZA5Vugc==>vrvyj+)-M`k}OA`n}fj^WI+< z3+;dZoIL;>TEKt-hgRgnV6_5f1_lu30}2(T7U!21C8rkaB^DJYGcoXhWf*}nj0`di z4nP_htZ<+LXF+tcGL$f+G86+zW1tLzX97~kq`;^Gw51-%OlHVu$Ys!DNMy)kNMR@f z@-l(69zzmPq!`Ff2B{y$Kmiz_TtNS=0n)%A0RvF@_5fKRaTsucF>ugAKyf)B)&pV( zAZBN<0fv7rLjf=bDjDp6A}qiVEdjzJAe#*wGeyAg&0|Ohs|K+^F_sR*AQepDc!0!p z1dtDN8<5GM0V1FPlu~4X7!kvm@y!l2yA;%~X0zew - - + test3 - + test4 - + 200