diff options
Diffstat (limited to 'tools/aapt/Command.cpp')
-rw-r--r-- | tools/aapt/Command.cpp | 92 |
1 files changed, 50 insertions, 42 deletions
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp index d80aaba8f64b..fb1370ef8bb5 100644 --- a/tools/aapt/Command.cpp +++ b/tools/aapt/Command.cpp @@ -540,7 +540,7 @@ static bool hasFeature(const char* name, const FeatureGroup& grp, } static void addImpliedFeature(KeyedVector<String8, ImpliedFeature>* impliedFeatures, - const char* name, const char* reason, bool sdk23) { + const char* name, const String8& reason, bool sdk23) { String8 name8(name); ssize_t idx = impliedFeatures->indexOfKey(name8); if (idx < 0) { @@ -553,7 +553,7 @@ static void addImpliedFeature(KeyedVector<String8, ImpliedFeature>* impliedFeatu if (feature->impliedBySdk23 && !sdk23) { feature->impliedBySdk23 = false; } - feature->reasons.add(String8(reason)); + feature->reasons.add(reason); } static void printFeatureGroupImpl(const FeatureGroup& grp, @@ -651,50 +651,58 @@ static void addImpliedFeaturesForPermission(const int targetSdk, const String8& bool impliedBySdk23Permission) { if (name == "android.permission.CAMERA") { addImpliedFeature(impliedFeatures, "android.hardware.camera", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); } else if (name == "android.permission.ACCESS_FINE_LOCATION") { - addImpliedFeature(impliedFeatures, "android.hardware.location.gps", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); - addImpliedFeature(impliedFeatures, "android.hardware.location", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); - } else if (name == "android.permission.ACCESS_MOCK_LOCATION") { + if (targetSdk < SDK_LOLLIPOP) { + addImpliedFeature(impliedFeatures, "android.hardware.location.gps", + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); + addImpliedFeature(impliedFeatures, "android.hardware.location.gps", + String8::format("targetSdkVersion < %d", SDK_LOLLIPOP), + impliedBySdk23Permission); + } addImpliedFeature(impliedFeatures, "android.hardware.location", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); } else if (name == "android.permission.ACCESS_COARSE_LOCATION") { - addImpliedFeature(impliedFeatures, "android.hardware.location.network", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + if (targetSdk < SDK_LOLLIPOP) { + addImpliedFeature(impliedFeatures, "android.hardware.location.network", + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); + addImpliedFeature(impliedFeatures, "android.hardware.location.network", + String8::format("targetSdkVersion < %d", SDK_LOLLIPOP), + impliedBySdk23Permission); + } addImpliedFeature(impliedFeatures, "android.hardware.location", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); - } else if (name == "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" || + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); + } else if (name == "android.permission.ACCESS_MOCK_LOCATION" || + name == "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" || name == "android.permission.INSTALL_LOCATION_PROVIDER") { addImpliedFeature(impliedFeatures, "android.hardware.location", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); } else if (name == "android.permission.BLUETOOTH" || name == "android.permission.BLUETOOTH_ADMIN") { - if (targetSdk > 4) { + if (targetSdk > SDK_DONUT) { addImpliedFeature(impliedFeatures, "android.hardware.bluetooth", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); addImpliedFeature(impliedFeatures, "android.hardware.bluetooth", - "targetSdkVersion > 4", impliedBySdk23Permission); + String8::format("targetSdkVersion > %d", SDK_DONUT), + impliedBySdk23Permission); } } else if (name == "android.permission.RECORD_AUDIO") { addImpliedFeature(impliedFeatures, "android.hardware.microphone", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); } else if (name == "android.permission.ACCESS_WIFI_STATE" || name == "android.permission.CHANGE_WIFI_STATE" || name == "android.permission.CHANGE_WIFI_MULTICAST_STATE") { addImpliedFeature(impliedFeatures, "android.hardware.wifi", - String8::format("requested %s permission", name.string()) - .string(), impliedBySdk23Permission); + String8::format("requested %s permission", name.string()), + impliedBySdk23Permission); } else if (name == "android.permission.CALL_PHONE" || name == "android.permission.CALL_PRIVILEGED" || name == "android.permission.MODIFY_PHONE_STATE" || @@ -707,8 +715,8 @@ static void addImpliedFeaturesForPermission(const int targetSdk, const String8& name == "android.permission.WRITE_APN_SETTINGS" || name == "android.permission.WRITE_SMS") { addImpliedFeature(impliedFeatures, "android.hardware.telephony", - String8("requested a telephony permission").string(), - impliedBySdk23Permission); + String8("requested a telephony permission"), + impliedBySdk23Permission); } } @@ -1678,18 +1686,18 @@ int doDump(Bundle* bundle) if (error == "") { if (orien == 0 || orien == 6 || orien == 8) { // Requests landscape, sensorLandscape, or reverseLandscape. - addImpliedFeature(&impliedFeatures, - "android.hardware.screen.landscape", - "one or more activities have specified a " - "landscape orientation", - false); + addImpliedFeature( + &impliedFeatures, "android.hardware.screen.landscape", + String8("one or more activities have specified a " + "landscape orientation"), + false); } else if (orien == 1 || orien == 7 || orien == 9) { // Requests portrait, sensorPortrait, or reversePortrait. - addImpliedFeature(&impliedFeatures, - "android.hardware.screen.portrait", - "one or more activities have specified a " - "portrait orientation", - false); + addImpliedFeature( + &impliedFeatures, "android.hardware.screen.portrait", + String8("one or more activities have specified a " + "portrait orientation"), + false); } } } else if (tag == "uses-library") { @@ -2054,7 +2062,7 @@ int doDump(Bundle* bundle) // directly or implied, required or not), then the faketouch feature is implied. if (!hasFeature("android.hardware.touchscreen", commonFeatures, impliedFeatures)) { addImpliedFeature(&impliedFeatures, "android.hardware.faketouch", - "default feature for all apps", false); + String8("default feature for all apps"), false); } const size_t numFeatureGroups = featureGroups.size(); |