aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-12-02 22:20:43 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-12-02 22:20:43 +0000
commit95740365fec6948f6110218bc35dbd57ef97de60 (patch)
treebf5ee545409c0ce0bf1f7de4d97305962608cf28
parent7f7b1b0683bff6e44fd2d6c5137731a638bf0f51 (diff)
parent38e98ec3eaf957d1cef006562c7a7dd77fcbbf99 (diff)
downloadbuild-95740365fec6948f6110218bc35dbd57ef97de60.tar.gz
Merge "Make Gradle plugin use source refs in merged manifests"
-rw-r--r--builder/src/main/java/com/android/builder/AndroidBuilder.java20
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/MergeResources.groovy8
3 files changed, 29 insertions, 2 deletions
diff --git a/builder/src/main/java/com/android/builder/AndroidBuilder.java b/builder/src/main/java/com/android/builder/AndroidBuilder.java
index 24ff0c8..6c18200 100644
--- a/builder/src/main/java/com/android/builder/AndroidBuilder.java
+++ b/builder/src/main/java/com/android/builder/AndroidBuilder.java
@@ -52,12 +52,12 @@ import com.android.sdklib.BuildToolInfo;
import com.android.sdklib.IAndroidTarget;
import com.android.sdklib.repository.FullRevision;
import com.android.utils.ILogger;
+import com.android.utils.SdkUtils;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
-import com.google.common.io.Files;
import java.io.File;
import java.io.FileNotFoundException;
@@ -106,6 +106,7 @@ public class AndroidBuilder {
private final ILogger mLogger;
private final CommandLineRunner mCmdLineRunner;
private final boolean mVerboseExec;
+ private boolean mLibrary;
@NonNull
private final IAndroidTarget mTarget;
@@ -193,6 +194,17 @@ public class AndroidBuilder {
return classpath;
}
+ /** Sets whether this builder is currently used to build a library. Defaults to false. */
+ public AndroidBuilder setBuildingLibrary(boolean library) {
+ mLibrary = library;
+ return this;
+ }
+
+ /** Sets whether this builder is currently used to build a library */
+ public boolean isBuildingLibrary() {
+ return mLibrary;
+ }
+
/**
* Returns the compile classpath for this config. If the config tests a library, this
* will include the classpath of the tested config
@@ -315,9 +327,11 @@ public class AndroidBuilder {
// if no manifest to merge, just copy to location, unless we have to inject
// attributes
if (attributeInjection.isEmpty() && packageOverride == null) {
- Files.copy(mainManifest, new File(outManifestLocation));
+ SdkUtils.copyXmlWithSourceReference(mainManifest,
+ new File(outManifestLocation));
} else {
ManifestMerger merger = new ManifestMerger(MergerLog.wrapSdkLog(mLogger), null);
+ merger.setInsertSourceMarkers(!mLibrary);
doMerge(merger, new File(outManifestLocation), mainManifest,
attributeInjection, packageOverride);
}
@@ -336,6 +350,7 @@ public class AndroidBuilder {
}
ManifestMerger merger = new ManifestMerger(MergerLog.wrapSdkLog(mLogger), null);
+ merger.setInsertSourceMarkers(!mLibrary);
doMerge(merger, mainManifestOut, mainManifest, manifestOverlays,
attributeInjection, packageOverride);
@@ -524,6 +539,7 @@ public class AndroidBuilder {
}
ManifestMerger merger = new ManifestMerger(MergerLog.wrapSdkLog(mLogger), null);
+ merger.setInsertSourceMarkers(!mLibrary);
doMerge(merger, outManifest, mainManifest, manifests, attributeInjection, packageOverride);
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
index f3d3fbe..b407228 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -327,6 +327,9 @@ public abstract class BasePlugin {
if (androidBuilder == null) {
SdkParser parser = getLoadedSdkParser()
androidBuilder = new AndroidBuilder(parser, creator, logger, verbose)
+ if (this instanceof LibraryPlugin) {
+ androidBuilder.setBuildingLibrary(true);
+ }
builders.put(variantData, androidBuilder)
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/MergeResources.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/MergeResources.groovy
index 16f6ff3..37502bc 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/MergeResources.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/MergeResources.groovy
@@ -14,6 +14,8 @@
* limitations under the License.
*/
package com.android.build.gradle.tasks
+
+import com.android.build.gradle.LibraryPlugin
import com.android.build.gradle.internal.tasks.IncrementalTask
import com.android.ide.common.res2.FileStatus
import com.android.ide.common.res2.FileValidity
@@ -75,6 +77,12 @@ public class MergeResources extends IncrementalTask {
MergedResourceWriter writer = new MergedResourceWriter(
destinationDir, getProcess9Patch() ? builder.aaptRunner : null)
+ // Don't put source markers in libraries since clients of the AAR will
+ // not have access to these (and it leaks build server paths etc to users)
+ if (plugin instanceof LibraryPlugin) {
+ writer.setInsertSourceMarkers(false)
+ }
+
merger.mergeData(writer, false /*doCleanUp*/)
// No exception? Write the known state.