AAPT2: optionally keep resources without default value
Teach "aapt2 link" about a new flag --no-resource-removal. When given, aapt2 will not filter out resources that lack default values. This is useful mostly when building overlay packages that define resources for non-default configurations, such as only for values-sv. Test: manual: build package with resource only in values-vs, verify apk with aapt2 dump Change-Id: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b Merged-In: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b
This commit is contained in:
committed by
Todd Kennedy
parent
3f1f4fc11d
commit
f99eda450f
@@ -20,4 +20,6 @@ LOCAL_PACKAGE_NAME := OverlayDeviceTests_AppOverlayOne
|
||||
LOCAL_SDK_VERSION := current
|
||||
LOCAL_COMPATIBILITY_SUITE := device-tests
|
||||
LOCAL_CERTIFICATE := platform
|
||||
LOCAL_USE_AAPT2 := true
|
||||
LOCAL_AAPT_FLAGS := --no-resource-removal
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
@@ -20,4 +20,6 @@ LOCAL_PACKAGE_NAME := OverlayDeviceTests_AppOverlayTwo
|
||||
LOCAL_SDK_VERSION := current
|
||||
LOCAL_COMPATIBILITY_SUITE := device-tests
|
||||
LOCAL_CERTIFICATE := platform
|
||||
LOCAL_USE_AAPT2 := true
|
||||
LOCAL_AAPT_FLAGS := --no-resource-removal
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
@@ -20,4 +20,6 @@ LOCAL_PACKAGE_NAME := OverlayDeviceTests_FrameworkOverlay
|
||||
LOCAL_SDK_VERSION := current
|
||||
LOCAL_COMPATIBILITY_SUITE := device-tests
|
||||
LOCAL_CERTIFICATE := platform
|
||||
LOCAL_USE_AAPT2 := true
|
||||
LOCAL_AAPT_FLAGS := --no-resource-removal
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
@@ -21,6 +21,8 @@ LOCAL_PACKAGE_NAME := OverlayHostTests_UpdateOverlay
|
||||
LOCAL_SDK_VERSION := current
|
||||
LOCAL_COMPATIBILITY_SUITE := general-tests
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := android-support-test
|
||||
LOCAL_USE_AAPT2 := true
|
||||
LOCAL_AAPT_FLAGS := --no-resource-removal
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
my_package_prefix := com.android.server.om.hosttest.framework_overlay
|
||||
|
||||
@@ -105,6 +105,7 @@ struct LinkOptions {
|
||||
bool no_version_vectors = false;
|
||||
bool no_version_transitions = false;
|
||||
bool no_resource_deduping = false;
|
||||
bool no_resource_removal = false;
|
||||
bool no_xml_namespaces = false;
|
||||
bool do_not_compress_anything = false;
|
||||
std::unordered_set<std::string> extensions_to_not_compress;
|
||||
@@ -1806,10 +1807,12 @@ class LinkCommand {
|
||||
|
||||
// Before we process anything, remove the resources whose default values don't exist.
|
||||
// We want to force any references to these to fail the build.
|
||||
if (!NoDefaultResourceRemover{}.Consume(context_, &final_table_)) {
|
||||
context_->GetDiagnostics()->Error(DiagMessage()
|
||||
<< "failed removing resources with no defaults");
|
||||
return 1;
|
||||
if (!options_.no_resource_removal) {
|
||||
if (!NoDefaultResourceRemover{}.Consume(context_, &final_table_)) {
|
||||
context_->GetDiagnostics()->Error(DiagMessage()
|
||||
<< "failed removing resources with no defaults");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
ReferenceLinker linker;
|
||||
@@ -2084,6 +2087,10 @@ int Link(const std::vector<StringPiece>& args, IDiagnostics* diagnostics) {
|
||||
"Disables automatic deduping of resources with\n"
|
||||
"identical values across compatible configurations.",
|
||||
&options.no_resource_deduping)
|
||||
.OptionalSwitch("--no-resource-removal",
|
||||
"Disables automatic removal of resources without defaults. Use this only\n"
|
||||
"when building runtime resource overlay packages.",
|
||||
&options.no_resource_removal)
|
||||
.OptionalSwitch("--enable-sparse-encoding",
|
||||
"Enables encoding sparse entries using a binary search tree.\n"
|
||||
"This decreases APK size at the cost of resource retrieval performance.",
|
||||
|
||||
Reference in New Issue
Block a user