public class SymbolUtils
extends java.lang.Object
| Constructor and Description |
|---|
SymbolUtils() |
| Modifier and Type | Method and Description |
|---|---|
static java.lang.String |
canonicalizeValueResourceName(java.lang.String name)
Updates the value resource name to mimic aapt's behaviour - replaces all dots and colons with
underscores.
|
static java.util.List<java.lang.String> |
generateMainDexKeepRules(com.android.ide.common.xml.ManifestData manifest,
java.io.File mergedResources)
Generates keep rules based on the nodes declared in the manifest file.
|
static java.util.List<java.lang.String> |
generateMinifyKeepRules(com.android.ide.common.xml.ManifestData manifest,
java.io.File mergedResources)
Generates keep rules based on the nodes declared in the manifest file.
|
static void |
generateRTxt(SymbolTable table,
java.io.File directory)
Creates and writes a symbol table into an R.txt file in a given directory.
|
static java.lang.String |
getPackageNameFromManifest(java.io.File manifestFile)
Pulls out the package name from the given android manifest.
|
static java.lang.String |
getPackageNameFromManifest(com.android.ide.common.xml.ManifestData manifest)
Pulls out the package name from the given parsed android manifest.
|
static java.util.Set<SymbolTable> |
loadDependenciesSymbolTables(java.util.List<com.android.builder.internal.aapt.AaptPackageConfig.LibraryInfo> libraries,
boolean enforceUniquePackageName,
java.lang.String mainPackageName)
Load symbol tables of each library on which the main library/application depends on.
|
static com.android.ide.common.xml.ManifestData |
parseManifest(java.io.File manifestFile) |
static void |
processLibraryMainSymbolTable(SymbolTable mainSymbolTable,
java.util.List<com.android.builder.internal.aapt.AaptPackageConfig.LibraryInfo> libraries,
boolean enforceUniquePackageName,
java.lang.String mainPackageName,
java.io.File manifestFile,
java.io.File sourceOut,
java.io.File symbolsOut,
java.io.File proguardOut,
java.io.File mergedResources)
Processes the symbol table and generates necessary files: R.txt, R.java and proguard rules
(
aapt_rules.txt). |
public static void processLibraryMainSymbolTable(@NonNull
SymbolTable mainSymbolTable,
@NonNull
java.util.List<com.android.builder.internal.aapt.AaptPackageConfig.LibraryInfo> libraries,
boolean enforceUniquePackageName,
@Nullable
java.lang.String mainPackageName,
@NonNull
java.io.File manifestFile,
@NonNull
java.io.File sourceOut,
@NonNull
java.io.File symbolsOut,
@Nullable
java.io.File proguardOut,
@Nullable
java.io.File mergedResources)
throws java.io.IOException
aapt_rules.txt). Afterwards generates R.java for all libraries the main
library depends on.mainSymbolTable - table with symbols of resources for the librarylibraries - libraries which this library depends onenforceUniquePackageName - should the package name be unique in the projectmainPackageName - package name of this librarymanifestFile - manifest filesourceOut - directory to contain R.javasymbolsOut - directory to contain R.txtproguardOut - directory to contain proguard rulesmergedResources - directory containing merged resourcesjava.io.IOException@NonNull public static java.util.Set<SymbolTable> loadDependenciesSymbolTables(@NonNull java.util.List<com.android.builder.internal.aapt.AaptPackageConfig.LibraryInfo> libraries, boolean enforceUniquePackageName, @NonNull java.lang.String mainPackageName) throws java.io.IOException
libraries - libraries which the main library/application depends onenforceUniquePackageName - should the package name be unique in the projectmainPackageName - package name of the main library/applicationjava.io.IOException@NonNull
public static java.lang.String getPackageNameFromManifest(@NonNull
java.io.File manifestFile)
throws java.io.IOException
manifestFile - manifest file of the libraryjava.io.IOException - if there is a problem reading the manifest or if the manifest does not
contain a package name@NonNull
public static java.lang.String getPackageNameFromManifest(@NonNull
com.android.ide.common.xml.ManifestData manifest)
manifest - the parsed manifest of the librarypublic static java.util.List<java.lang.String> generateMinifyKeepRules(@NonNull
com.android.ide.common.xml.ManifestData manifest,
@Nullable
java.io.File mergedResources)
throws java.io.IOException
Used in the new resource processing, since aapt is not used in processing libraries'
resources and the aapt_rules.txt file and its rules are required by minify.
Goes through all application, instrumentation, activity, service, provider and receiver keep class data in the manifest, generates
keep rules for each of them and returns them as a list.
For examples refer to SymbolUtilsTest.java.
manifest - containing keep class datajava.io.IOExceptionpublic static java.util.List<java.lang.String> generateMainDexKeepRules(@NonNull
com.android.ide.common.xml.ManifestData manifest,
@Nullable
java.io.File mergedResources)
throws java.io.IOException
When AAPT2 is enabled, this method is called to generate manifest_keep.txt file
for Dex. Goes through all application, instrumentation, activity,
service, provider and receiver nodes and generates keep rules for
each of them, as long as the node doesn't declare it belongs to a private process. Returns
the keep rules as a list.
For examples refer to SymbolUtilsTest.java.
manifest - containing keep class datajava.io.IOExceptionpublic static void generateRTxt(@NonNull
SymbolTable table,
@NonNull
java.io.File directory)
table - the tabledirectory - the directory where the table should be writtenpublic static com.android.ide.common.xml.ManifestData parseManifest(@NonNull
java.io.File manifestFile)
throws java.io.IOException
java.io.IOException@NonNull
public static java.lang.String canonicalizeValueResourceName(@NonNull
java.lang.String name)
If the name contains whitespaces or other illegal characters, they are not checked in this
method, but caught in the Symbol constructor call to Symbol.validateSymbol(java.lang.String, com.android.resources.ResourceType).
name - the resource name to be updated