public class ResourceUsageModel
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static class |
ResourceUsageModel.Resource |
static class |
ResourceUsageModel.ResourceActions |
| 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) |
boolean |
addResourceToWhitelist(ResourceUsageModel.Resource resource) |
protected ResourceUsageModel.Resource |
createResource(com.android.resources.ResourceType type,
java.lang.String name,
int realValue) |
protected ResourceUsageModel.Resource |
declareResource(com.android.resources.ResourceType type,
java.lang.String name,
org.w3c.dom.Node node) |
java.lang.String |
dumpConfig() |
java.lang.String |
dumpReferences() |
java.lang.String |
dumpResourceModel() |
java.lang.String |
dumpWhitelistedResources() |
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) |
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) |
static java.lang.String |
getResourceFieldName(org.w3c.dom.Element element) |
ResourceUsageModel.Resource |
getResourceFromFilePath(java.lang.String url) |
ResourceUsageModel.Resource |
getResourceFromUrl(java.lang.String possibleUrlReference) |
java.util.Collection<java.util.Map<java.lang.String,ResourceUsageModel.Resource>> |
getResourceMaps() |
java.util.List<ResourceUsageModel.Resource> |
getResources() |
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 getResourceFieldName(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 getResourceFromUrl(@NonNull java.lang.String possibleUrlReference)
@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 dumpWhitelistedResources()
public java.lang.String dumpConfig()
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)
public boolean addResourceToWhitelist(@Nullable
ResourceUsageModel.Resource resource)
@NonNull public ResourceUsageModel.Resource addResource(@NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name, @Nullable java.lang.String value)
@NonNull protected ResourceUsageModel.Resource createResource(@NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name, int realValue)
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()