aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceContainerBuilder.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java18
7 files changed, 54 insertions, 19 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index 194c9245b2..dd650e04a6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -176,14 +176,14 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
resourceContainers,
tools,
null, /* Artifact rTxt */
+ null, /* Artifact symbolsTxt */
ruleContext.getTokenizedStringListAttr("resource_configuration_filters"),
ruleContext.getTokenizedStringListAttr("nocompress_extensions"),
ruleContext.getTokenizedStringListAttr("densities"),
ruleContext.attributes().get("application_id", Type.STRING),
getExpandedMakeVarsForAttr(ruleContext, "version_code"),
getExpandedMakeVarsForAttr(ruleContext, "version_name"),
- false,
- getProguardConfigArtifact(ruleContext, ""));
+ false, getProguardConfigArtifact(ruleContext, ""));
incrementalResourceApk = applicationManifest.addStubApplication(ruleContext)
.packWithDataAndResources(ruleContext
.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_INCREMENTAL_RESOURCES_APK),
@@ -191,14 +191,14 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
resourceContainers,
tools,
null, /* Artifact rTxt */
+ null, /* Artifact symbolsTxt */
ruleContext.getTokenizedStringListAttr("resource_configuration_filters"),
ruleContext.getTokenizedStringListAttr("nocompress_extensions"),
ruleContext.getTokenizedStringListAttr("densities"),
ruleContext.attributes().get("application_id", Type.STRING),
getExpandedMakeVarsForAttr(ruleContext, "version_code"),
getExpandedMakeVarsForAttr(ruleContext, "version_name"),
- true,
- getProguardConfigArtifact(ruleContext, "incremental"));
+ true, getProguardConfigArtifact(ruleContext, "incremental"));
splitResourceApk = applicationManifest
.createSplitManifest(ruleContext, "android_resources", false)
.packWithDataAndResources(getDxArtifact(ruleContext, "android_resources.ap_"),
@@ -206,14 +206,14 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
resourceContainers,
tools,
null, /* Artifact rTxt */
+ null, /* Artifact symbolsTxt */
ruleContext.getTokenizedStringListAttr("resource_configuration_filters"),
ruleContext.getTokenizedStringListAttr("nocompress_extensions"),
ruleContext.getTokenizedStringListAttr("densities"),
ruleContext.attributes().get("application_id", Type.STRING),
getExpandedMakeVarsForAttr(ruleContext, "version_code"),
getExpandedMakeVarsForAttr(ruleContext, "version_name"),
- true,
- getProguardConfigArtifact(ruleContext, "incremental_split"));
+ true, getProguardConfigArtifact(ruleContext, "incremental_split"));
} else {
// Retrieve the resources from the resources attribute on the android_binary rule
// and recompile them if necessary.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
index 1f921f41b8..9e5559b78b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
@@ -87,6 +87,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_APK),
ruleContext, transitiveResources, tools,
ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT),
+ ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_SYMBOLS_TXT),
ImmutableList.<String>of(), /* configurationFilters */
ImmutableList.<String>of(), /* uncompressedExtensions */
ImmutableList.<String>of(), /* densities */
@@ -205,7 +206,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
ImmutableList.<Artifact>of(), ImmutableList.<Artifact>of(),
ImmutableList.<PathFragment>of(), ImmutableList.<PathFragment>of(),
ruleContext.attributes().get("exports_manifest", Type.BOOLEAN),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT));
+ ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT), null);
primaryResources = new AndroidResourcesProcessorBuilder(tools, ruleContext)
.setApkOut(apk)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceContainerBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceContainerBuilder.java
index 0a83753ded..338e424703 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceContainerBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceContainerBuilder.java
@@ -30,6 +30,7 @@ public final class AndroidResourceContainerBuilder {
private Artifact manifest;
private Artifact rOutput;
private boolean inlineConstants = false;
+ private Artifact symbolsFile;
/** Provides the resources and assets for the ResourceContainer. */
public AndroidResourceContainerBuilder withData(LocalResourceContainer data) {
@@ -70,7 +71,8 @@ public final class AndroidResourceContainerBuilder {
data.getAssetRoots(),
data.getResourceRoots(),
ruleContext.attributes().get("exports_manifest", Type.BOOLEAN),
- rOutput);
+ rOutput,
+ symbolsFile);
}
private String getJavaPackage(RuleContext ruleContext, Artifact apk) {
@@ -97,4 +99,9 @@ public final class AndroidResourceContainerBuilder {
? ruleContext.attributes().get("rename_manifest_package", Type.STRING)
: null;
}
+
+ public AndroidResourceContainerBuilder withSymbolsFile(Artifact symbolsFile) {
+ this.symbolsFile = symbolsFile;
+ return this;
+ }
} \ No newline at end of file
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
index a7928042aa..f873e2b2d4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
@@ -56,6 +56,7 @@ public class AndroidResourcesProcessorBuilder {
private String versionCode;
private String applicationId;
private String versionName;
+ private Artifact symbolsTxt;
/**
* @param androidTools A configured AndroidTools for the AndroidResourcesProcessor action.
@@ -112,6 +113,11 @@ public class AndroidResourcesProcessorBuilder {
return this;
}
+ public AndroidResourcesProcessorBuilder setSymbolsTxt(Artifact symbolsTxt) {
+ this.symbolsTxt = symbolsTxt;
+ return this;
+ }
+
public AndroidResourcesProcessorBuilder setApkOut(Artifact apkOut) {
this.apkOut = apkOut;
return this;
@@ -138,11 +144,12 @@ public class AndroidResourcesProcessorBuilder {
inputs.add(container.getManifest());
inputs.add(container.getRTxt());
- args.add(String.format("%s:%s:%s:%s",
+ args.add(String.format("%s:%s:%s:%s:%s",
convertRoots(container, ResourceType.RESOURCES),
convertRoots(container, ResourceType.ASSETS),
container.getManifest().getExecPathString(),
- container.getRTxt() == null ? "" : container.getRTxt().getExecPath()
+ container.getRTxt() == null ? "" : container.getRTxt().getExecPath(),
+ container.getSymbolsTxt() == null ? "" : container.getSymbolsTxt().getExecPath()
));
}
@@ -210,6 +217,11 @@ public class AndroidResourcesProcessorBuilder {
args.add("--packageType");
args.add("LIBRARY");
}
+ if (symbolsTxt != null) {
+ args.add("--symbolsTxtOut");
+ args.add(symbolsTxt.getExecPathString());
+ outs.add(symbolsTxt);
+ }
if (sourceJarOut != null) {
args.add("--srcJarOutput");
args.add(sourceJarOut.getExecPathString());
@@ -297,7 +309,8 @@ public class AndroidResourcesProcessorBuilder {
primary.getRoots(ResourceType.ASSETS),
primary.getRoots(ResourceType.RESOURCES),
primary.isManifestExported(),
- rTxtOut);
+ rTxtOut,
+ symbolsTxt);
}
public AndroidResourcesProcessorBuilder setJavaPackage(String newManifestPackage) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java
index c0e788e3b9..e3f8f23bd0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java
@@ -97,6 +97,7 @@ public final class AndroidResourcesProvider implements TransitiveInfoProvider {
private final boolean manifestExported;
private final Artifact javaSourceJar;
private final Artifact rTxt;
+ private Artifact symbolsTxt;
public ResourceContainer(Label label,
String javaPackage,
@@ -110,7 +111,8 @@ public final class AndroidResourcesProvider implements TransitiveInfoProvider {
ImmutableList<PathFragment> assetsRoots,
ImmutableList<PathFragment> resourcesRoots,
boolean manifestExported,
- Artifact rTxt) {
+ Artifact rTxt,
+ Artifact symbolsTxt) {
this.javaSourceJar = javaSourceJar;
this.manifestExported = manifestExported;
this.label = Preconditions.checkNotNull(label);
@@ -124,6 +126,7 @@ public final class AndroidResourcesProvider implements TransitiveInfoProvider {
this.assetsRoots = Preconditions.checkNotNull(assetsRoots);
this.resourcesRoots = Preconditions.checkNotNull(resourcesRoots);
this.rTxt = rTxt;
+ this.symbolsTxt = symbolsTxt;
}
public Label getLabel() {
@@ -170,6 +173,11 @@ public final class AndroidResourcesProvider implements TransitiveInfoProvider {
return rTxt;
}
+
+ public Artifact getSymbolsTxt() {
+ return symbolsTxt;
+ }
+
public ImmutableList<PathFragment> getRoots(ResourceType resourceType) {
return resourceType == ResourceType.ASSETS ? assetsRoots : resourcesRoots;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index f139a45097..6c72ab8b87 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -95,6 +95,8 @@ public final class AndroidRuleClasses {
fromTemplates("%{name}_filtered.jar");
public static final SafeImplicitOutputsFunction ANDROID_R_TXT =
fromTemplates("%{name}_symbols/R.txt");
+ public static final SafeImplicitOutputsFunction ANDROID_SYMBOLS_TXT =
+ fromTemplates("%{name}_symbols/local-R.txt");
public static final SafeImplicitOutputsFunction STUB_APPLICATON_MANIFEST =
fromTemplates("%{name}_files/stub/AndroidManifest.xml");
public static final SafeImplicitOutputsFunction FULL_DEPLOY_MARKER =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
index c5aae12d47..b79f54937a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
@@ -222,12 +222,13 @@ public final class ApplicationManifest {
resourceContainers,
tools,
rTxt,
- ImmutableList.<String>of(), /* configurationFilters */
+ null, /* configurationFilters */
ImmutableList.<String>of(), /* uncompressedExtensions */
ImmutableList.<String>of(), /* densities */
- null, /* String applicationId */
+ ImmutableList.<String>of(), /* String applicationId */
null, /* String versionCode */
null, /* String versionName */
+ null, /* Artifact symbolsTxt */
incremental,
data,
proguardCfg);
@@ -244,14 +245,14 @@ public final class ApplicationManifest {
NestedSet<ResourceContainer> resourceContainers,
AndroidTools tools,
Artifact rTxt,
+ Artifact symbolsTxt,
List<String> configurationFilters,
List<String> uncompressedExtensions,
List<String> densities,
String applicationId,
String versionCode,
String versionName,
- boolean incremental,
- Artifact proguardCfg) {
+ boolean incremental, Artifact proguardCfg) {
try {
LocalResourceContainer data = new LocalResourceContainer.Builder()
.withAssets(
@@ -272,6 +273,7 @@ public final class ApplicationManifest {
resourceContainers,
tools,
rTxt,
+ symbolsTxt,
configurationFilters,
uncompressedExtensions,
densities,
@@ -295,6 +297,7 @@ public final class ApplicationManifest {
NestedSet<ResourceContainer> resourceContainers,
AndroidTools tools,
Artifact rTxt,
+ Artifact symbolsTxt,
List<String> configurationFilters,
List<String> uncompressedExtensions,
List<String> densities,
@@ -302,13 +305,13 @@ public final class ApplicationManifest {
String versionCode,
String versionName,
boolean incremental,
- LocalResourceContainer data,
- Artifact proguardCfg) {
+ LocalResourceContainer data, Artifact proguardCfg) {
ResourceContainer resourceContainer = checkForInlinedResources(
new AndroidResourceContainerBuilder()
.withData(data)
.withManifest(getManifest())
.withROutput(rTxt)
+ .withSymbolsFile(symbolsTxt)
.buildFromRule(ruleContext, resourceApk),
resourceContainers,
ruleContext);
@@ -332,6 +335,7 @@ public final class ApplicationManifest {
if (!incremental) {
builder
.setRTxtOut(resourceContainer.getRTxt())
+ .setSymbolsTxt(resourceContainer.getSymbolsTxt())
.setSourceJarOut(resourceContainer.getJavaSourceJar());
}
@@ -472,7 +476,7 @@ public final class ApplicationManifest {
resourceContainer.getRoots(ResourceType.ASSETS),
resourceContainer.getRoots(ResourceType.RESOURCES),
resourceContainer.isManifestExported(),
- resourceContainer.getRTxt());
+ resourceContainer.getRTxt(), null);
aaptActionHelper.createGenerateProguardAction(proguardCfg);