diff options
author | Tor Norbye <tnorbye@google.com> | 2013-12-02 08:08:08 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-12-02 13:05:57 -0800 |
commit | 38e98ec3eaf957d1cef006562c7a7dd77fcbbf99 (patch) | |
tree | bf5ee545409c0ce0bf1f7de4d97305962608cf28 | |
parent | 7f7b1b0683bff6e44fd2d6c5137731a638bf0f51 (diff) | |
download | build-38e98ec3eaf957d1cef006562c7a7dd77fcbbf99.tar.gz |
Make Gradle plugin use source refs in merged manifests
Also turn off source references in merged resources for
libraries.
Change-Id: I4a4700b80a5ca5858f68fca7b355771bab280a9c
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. |