public class ResourceUsageModel
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
ResourceUsageModel.Resource |
Constructor and Description |
---|
ResourceUsageModel() |
Modifier and Type | Method and Description |
---|---|
ResourceUsageModel.Resource |
addDeclaredResource(com.android.resources.ResourceType type,
java.lang.String name,
java.lang.String value,
boolean declared) |
ResourceUsageModel.Resource |
addResource(com.android.resources.ResourceType type,
java.lang.String name,
java.lang.String value) |
protected ResourceUsageModel.Resource |
declareResource(com.android.resources.ResourceType type,
java.lang.String name,
org.w3c.dom.Node node) |
java.lang.String |
dumpReferences() |
java.lang.String |
dumpResourceModel() |
protected java.util.List<ResourceUsageModel.Resource> |
findRoots(java.util.List<ResourceUsageModel.Resource> resources) |
java.util.List<ResourceUsageModel.Resource> |
findUnused() |
java.util.List<ResourceUsageModel.Resource> |
findUnused(java.util.List<ResourceUsageModel.Resource> resources) |
static java.lang.String |
getFieldName(org.w3c.dom.Element element) |
ResourceUsageModel.Resource |
getResource(org.w3c.dom.Element element) |
ResourceUsageModel.Resource |
getResource(org.w3c.dom.Element element,
boolean declare) |
ResourceUsageModel.Resource |
getResource(java.lang.Integer value) |
ResourceUsageModel.Resource |
getResource(com.android.resources.ResourceType type,
java.lang.String name) |
ResourceUsageModel.Resource |
getResourceFromFilePath(java.lang.String url) |
java.util.Collection<java.util.Map<java.lang.String,ResourceUsageModel.Resource>> |
getResourceMaps() |
java.util.List<ResourceUsageModel.Resource> |
getResources() |
static com.android.resources.ResourceType |
getResourceType(org.w3c.dom.Element element) |
protected boolean |
ignoreToolsAttributes()
Whether we should ignore tools attribute resource references.
|
static boolean |
isAnalyticsFile(java.io.File file)
Returns true if this XML file corresponds to an Analytics configuration file;
these contain some attributes read by the library which won't be flagged as
used by the application
|
boolean |
isSafeMode()
Whether we should attempt to guess resources that should be kept based on looking
at the string pool and assuming some of the strings can be used to dynamically construct
the resource names.
|
static boolean |
markReachable(ResourceUsageModel.Resource resource)
Marks the given resource (if non-null) as reachable, and returns true if
this is the first time the resource is marked reachable
|
void |
processToolsAttributes() |
protected java.lang.String |
readText(java.io.File file) |
void |
recordManifestUsages(org.w3c.dom.Node node) |
void |
recordResourceReferences(com.android.resources.ResourceFolderType folderType,
org.w3c.dom.Node node,
ResourceUsageModel.Resource from)
Records resource declarations and usages within an XML resource file
|
void |
recordToolsAttributes(org.w3c.dom.Attr attr) |
protected void |
referencedString(java.lang.String string) |
void |
tokenizeCss(ResourceUsageModel.Resource from,
java.lang.String css) |
void |
tokenizeHtml(ResourceUsageModel.Resource from,
java.lang.String html) |
void |
tokenizeJavaCode(java.lang.String s)
Adds the resource identifiers found in the given Java source code into the reference map
|
void |
tokenizeJs(ResourceUsageModel.Resource from,
java.lang.String js) |
void |
tokenizeUnknownBinary(ResourceUsageModel.Resource from,
java.io.File file)
Look through binary/unknown files looking for resource URLs
|
void |
visitBinaryResource(com.android.resources.ResourceFolderType folderType,
java.io.File file) |
void |
visitXmlDocument(java.io.File file,
com.android.resources.ResourceFolderType folderType,
org.w3c.dom.Document document) |
public static java.lang.String getFieldName(org.w3c.dom.Element element)
public static com.android.resources.ResourceType getResourceType(org.w3c.dom.Element element)
@Nullable public ResourceUsageModel.Resource getResource(org.w3c.dom.Element element)
public ResourceUsageModel.Resource getResource(org.w3c.dom.Element element, boolean declare)
@Nullable public ResourceUsageModel.Resource getResource(@NonNull java.lang.Integer value)
@Nullable public ResourceUsageModel.Resource getResource(@NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name)
@Nullable public ResourceUsageModel.Resource getResourceFromFilePath(@NonNull java.lang.String url)
public static boolean markReachable(@Nullable ResourceUsageModel.Resource resource)
public void recordManifestUsages(org.w3c.dom.Node node)
public java.util.List<ResourceUsageModel.Resource> findUnused()
public java.lang.String dumpReferences()
public java.lang.String dumpResourceModel()
public java.util.List<ResourceUsageModel.Resource> findUnused(java.util.List<ResourceUsageModel.Resource> resources)
@NonNull protected java.util.List<ResourceUsageModel.Resource> findRoots(@NonNull java.util.List<ResourceUsageModel.Resource> resources)
@NonNull public ResourceUsageModel.Resource addDeclaredResource(@NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name, @Nullable java.lang.String value, boolean declared)
@NonNull public ResourceUsageModel.Resource addResource(@NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name, @Nullable java.lang.String value)
public boolean isSafeMode()
tools:shrinkMode="strict"
.public void processToolsAttributes()
public void recordToolsAttributes(@Nullable org.w3c.dom.Attr attr)
protected ResourceUsageModel.Resource declareResource(com.android.resources.ResourceType type, java.lang.String name, org.w3c.dom.Node node)
@NonNull protected java.lang.String readText(@NonNull java.io.File file)
public void visitBinaryResource(@Nullable com.android.resources.ResourceFolderType folderType, @NonNull java.io.File file)
public void visitXmlDocument(@NonNull java.io.File file, @Nullable com.android.resources.ResourceFolderType folderType, @NonNull org.w3c.dom.Document document)
public static boolean isAnalyticsFile(java.io.File file)
file
- the file in questionprotected boolean ignoreToolsAttributes()
For example, for resource shrinking we want to ignore tools attributes, whereas for resource refactoring on the source code we do not.
public void recordResourceReferences(@NonNull com.android.resources.ResourceFolderType folderType, @NonNull org.w3c.dom.Node node, @Nullable ResourceUsageModel.Resource from)
folderType
- the type of resource filenode
- the root node to start the recursive search fromfrom
- a referencing context, if any.public void tokenizeHtml(@Nullable ResourceUsageModel.Resource from, @NonNull java.lang.String html)
public void tokenizeJs(@Nullable ResourceUsageModel.Resource from, @NonNull java.lang.String js)
public void tokenizeCss(@Nullable ResourceUsageModel.Resource from, @NonNull java.lang.String css)
public void tokenizeUnknownBinary(@Nullable ResourceUsageModel.Resource from, @NonNull java.io.File file)
public void tokenizeJavaCode(@NonNull java.lang.String s)
protected void referencedString(@NonNull java.lang.String string)
public java.util.List<ResourceUsageModel.Resource> getResources()
@NonNull public java.util.Collection<java.util.Map<java.lang.String,ResourceUsageModel.Resource>> getResourceMaps()