aboutsummaryrefslogtreecommitdiff
path: root/gradle/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'gradle/src/main')
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/api/ApkVariant.java4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/api/ApplicationVariantImpl.java2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/api/TestVariantImpl.java2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/dsl/AaptOptionsImpl.groovy3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/dsl/BuildTypeDsl.groovy4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigDsl.java26
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigFactory.groovy2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/ArtifactInfoImpl.java130
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java18
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy95
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/SigningConfigImpl.java104
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/VariantImpl.java121
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/SigningReportTask.groovy2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ValidateSigningTask.groovy3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessAppManifest.groovy4
19 files changed, 369 insertions, 166 deletions
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy b/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy
index 5f60990..b7be7db 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy
@@ -14,15 +14,17 @@
* limitations under the License.
*/
package com.android.build.gradle
+
import com.android.build.gradle.api.ApplicationVariant
import com.android.builder.DefaultBuildType
import com.android.builder.DefaultProductFlavor
-import com.android.builder.signing.SigningConfig
+import com.android.builder.model.SigningConfig
import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.internal.DefaultDomainObjectSet
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator
+
/**
* Extension for 'application' project.
*/
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
index f3f465f..f8ee3d3 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
@@ -15,6 +15,7 @@
*/
package com.android.build.gradle
+
import com.android.annotations.NonNull
import com.android.annotations.Nullable
import com.android.build.gradle.api.BaseVariant
@@ -37,7 +38,7 @@ import com.android.build.gradle.internal.variant.BaseVariantData
import com.android.build.gradle.internal.variant.TestVariantData
import com.android.builder.DefaultBuildType
import com.android.builder.VariantConfiguration
-import com.android.builder.signing.SigningConfig
+import com.android.builder.model.SigningConfig
import com.google.common.collect.ArrayListMultimap
import com.google.common.collect.ListMultimap
import com.google.common.collect.Maps
@@ -56,6 +57,7 @@ import static com.android.builder.BuilderConstants.INSTRUMENT_TEST
import static com.android.builder.BuilderConstants.LINT
import static com.android.builder.BuilderConstants.RELEASE
import static com.android.builder.BuilderConstants.UI_TEST
+
/**
* Gradle plugin class for 'application' projects.
*/
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 720b955..584e510 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -68,8 +68,8 @@ import com.android.builder.VariantConfiguration
import com.android.builder.dependency.JarDependency
import com.android.builder.dependency.LibraryDependency
import com.android.builder.model.ProductFlavor
+import com.android.builder.model.SigningConfig
import com.android.builder.model.SourceProvider
-import com.android.builder.signing.SigningConfig
import com.android.builder.testing.ConnectedDeviceProvider
import com.android.builder.testing.api.DeviceProvider
import com.android.builder.testing.api.TestServer
@@ -329,7 +329,7 @@ public abstract class BasePlugin {
processManifestTask.conventionMapping.manifestOverlays = {
config.manifestOverlays
}
- processManifestTask.conventionMapping.packageName = {
+ processManifestTask.conventionMapping.packageNameOverride = {
config.packageOverride
}
processManifestTask.conventionMapping.versionName = {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy b/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy
index 3b847fe..ce7f73e 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy
@@ -20,11 +20,12 @@ import com.android.build.gradle.internal.dsl.BuildTypeDsl
import com.android.build.gradle.internal.dsl.SigningConfigDsl
import com.android.builder.BuilderConstants
import com.android.builder.DefaultBuildType
-import com.android.builder.signing.SigningConfig
+import com.android.builder.model.SigningConfig
import org.gradle.api.Action
import org.gradle.api.internal.DefaultDomainObjectSet
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator
+
/**
* Extension for 'library' project.
*/
diff --git a/gradle/src/main/groovy/com/android/build/gradle/api/ApkVariant.java b/gradle/src/main/groovy/com/android/build/gradle/api/ApkVariant.java
index 0104656..d28b6dd 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/api/ApkVariant.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/api/ApkVariant.java
@@ -23,7 +23,7 @@ import com.android.build.gradle.tasks.PackageApplication;
import com.android.build.gradle.tasks.ZipAlign;
import com.android.builder.DefaultBuildType;
import com.android.builder.DefaultProductFlavor;
-import com.android.builder.signing.SigningConfig;
+import com.android.builder.model.SigningConfig;
import org.gradle.api.DefaultTask;
import java.util.List;
@@ -55,7 +55,7 @@ public interface ApkVariant extends BaseVariant {
DefaultProductFlavor getMergedFlavor();
/**
- * Returns the {@link com.android.builder.signing.SigningConfig} for this build variant,
+ * Returns the {@link SigningConfig} for this build variant,
* if one has been specified.
*/
@Nullable
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/api/ApplicationVariantImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/api/ApplicationVariantImpl.java
index 1f644ec..efbbad3 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/api/ApplicationVariantImpl.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/api/ApplicationVariantImpl.java
@@ -33,7 +33,7 @@ import com.android.build.gradle.tasks.RenderscriptCompile;
import com.android.build.gradle.tasks.ZipAlign;
import com.android.builder.DefaultBuildType;
import com.android.builder.DefaultProductFlavor;
-import com.android.builder.signing.SigningConfig;
+import com.android.builder.model.SigningConfig;
import org.gradle.api.DefaultTask;
import org.gradle.api.Task;
import org.gradle.api.tasks.Copy;
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/api/TestVariantImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/api/TestVariantImpl.java
index 8dfc8f1..305c2e5 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/api/TestVariantImpl.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/api/TestVariantImpl.java
@@ -32,7 +32,7 @@ import com.android.build.gradle.tasks.RenderscriptCompile;
import com.android.build.gradle.tasks.ZipAlign;
import com.android.builder.DefaultBuildType;
import com.android.builder.DefaultProductFlavor;
-import com.android.builder.signing.SigningConfig;
+import com.android.builder.model.SigningConfig;
import org.gradle.api.DefaultTask;
import org.gradle.api.Task;
import org.gradle.api.tasks.Copy;
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/AaptOptionsImpl.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/AaptOptionsImpl.groovy
index 319cd96..449a43f 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/AaptOptionsImpl.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/AaptOptionsImpl.groovy
@@ -16,8 +16,7 @@
package com.android.build.gradle.internal.dsl;
-
-import com.android.builder.AaptOptions
+import com.android.builder.model.AaptOptions
import org.gradle.api.tasks.Input
public class AaptOptionsImpl implements AaptOptions {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/BuildTypeDsl.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/BuildTypeDsl.groovy
index b2c164e..8b9eed0 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/BuildTypeDsl.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/BuildTypeDsl.groovy
@@ -17,9 +17,9 @@
package com.android.build.gradle.internal.dsl
import com.android.annotations.NonNull
-import com.android.builder.DefaultBuildType
import com.android.builder.BuilderConstants
-import com.android.builder.signing.SigningConfig
+import com.android.builder.DefaultBuildType
+import com.android.builder.model.SigningConfig
import com.google.common.collect.Lists
/**
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigDsl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigDsl.java
index 1455032..2960e18 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigDsl.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigDsl.java
@@ -18,9 +18,11 @@ package com.android.build.gradle.internal.dsl;
import com.android.annotations.NonNull;
import com.android.builder.BuilderConstants;
-import com.android.builder.signing.SigningConfig;
+import com.android.builder.model.SigningConfig;
+import com.android.builder.signing.DefaultSigningConfig;
import com.android.prefs.AndroidLocation;
import com.google.common.base.Objects;
+import org.gradle.api.Named;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.Optional;
@@ -30,14 +32,11 @@ import java.io.File;
import java.io.Serializable;
/**
- * DSL overlay for {@link SigningConfig}.
+ * DSL overlay for {@link DefaultSigningConfig}.
*/
-public class SigningConfigDsl extends SigningConfig implements Serializable {
+public class SigningConfigDsl extends DefaultSigningConfig implements Serializable, Named {
private static final long serialVersionUID = 1L;
- @NonNull
- private final String name;
-
/**
* Creates a SigningConfig with a given name.
*
@@ -45,8 +44,8 @@ public class SigningConfigDsl extends SigningConfig implements Serializable {
*
*/
public SigningConfigDsl(@NonNull String name) {
- super();
- this.name = name;
+ super(name);
+
if (BuilderConstants.DEBUG.equals(name)) {
try {
initDebug();
@@ -56,11 +55,6 @@ public class SigningConfigDsl extends SigningConfig implements Serializable {
}
}
- @NonNull
- public String getName() {
- return name;
- }
-
public SigningConfigDsl initWith(SigningConfig that) {
setStoreFile(that.getStoreFile());
setStorePassword(that.getStorePassword());
@@ -122,7 +116,7 @@ public class SigningConfigDsl extends SigningConfig implements Serializable {
SigningConfigDsl that = (SigningConfigDsl) o;
- if (!name.equals(that.name)) return false;
+ if (!mName.equals(that.mName)) return false;
return true;
}
@@ -130,14 +124,14 @@ public class SigningConfigDsl extends SigningConfig implements Serializable {
@Override
public int hashCode() {
int result = super.hashCode();
- result = 31 * result + name.hashCode();
+ result = 31 * result + mName.hashCode();
return result;
}
@Override
public String toString() {
return Objects.toStringHelper(this)
- .add("name", name)
+ .add("name", mName)
.add("storeFile", getStoreFile() != null ? getStoreFile().getAbsolutePath() : "null")
.add("storePassword", getStorePassword())
.add("keyAlias", getKeyAlias())
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigFactory.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigFactory.groovy
index 57af98e..cdb3ebf 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigFactory.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/SigningConfigFactory.groovy
@@ -16,7 +16,7 @@
package com.android.build.gradle.internal.dsl
-import com.android.builder.signing.SigningConfig
+import com.android.builder.model.SigningConfig
import org.gradle.api.NamedDomainObjectFactory
import org.gradle.internal.reflect.Instantiator
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ArtifactInfoImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ArtifactInfoImpl.java
new file mode 100644
index 0000000..9978fd0
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ArtifactInfoImpl.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.build.gradle.internal.model;
+
+import com.android.annotations.NonNull;
+import com.android.annotations.Nullable;
+import com.android.build.gradle.model.ArtifactInfo;
+import com.android.build.gradle.model.Dependencies;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Implementation of ArtifactInfo that is serializable
+ */
+public class ArtifactInfoImpl implements ArtifactInfo, Serializable {
+
+ @NonNull
+ private final File outputFile;
+ private final boolean isSigned;
+ @Nullable
+ private final String signingConfigName;
+ @NonNull
+ private final String assembleTaskName;
+ @NonNull
+ private final String packageName;
+ @NonNull
+ private final List<File> generatedSourceFolders;
+ @NonNull
+ private final List<File> generatedResourceFolders;
+ @NonNull
+ private final File classesFolder;
+ @NonNull
+ private final Dependencies dependencies;
+
+
+ ArtifactInfoImpl(@NonNull String assembleTaskName,
+ @NonNull File outputFile,
+ boolean isSigned,
+ @Nullable String signingConfigName,
+ @NonNull String packageName,
+ @NonNull List<File> generatedSourceFolders,
+ @NonNull List<File> generatedResourceFolders,
+ @NonNull File classesFolder,
+ @NonNull Dependencies dependencies) {
+ this.assembleTaskName = assembleTaskName;
+ this.outputFile = outputFile;
+ this.isSigned = isSigned;
+ this.signingConfigName = signingConfigName;
+ this.packageName = packageName;
+ this.generatedSourceFolders = generatedSourceFolders;
+ this.generatedResourceFolders = generatedResourceFolders;
+ this.classesFolder = classesFolder;
+ this.dependencies = dependencies;
+ }
+
+ @NonNull
+ @Override
+ public File getOutputFile() {
+ return outputFile;
+ }
+
+ @Override
+ public boolean isSigned() {
+ return isSigned;
+ }
+
+ @Nullable
+ @Override
+ public String getSigningConfigName() {
+ return signingConfigName;
+ }
+
+ @NonNull
+ @Override
+ public String getPackageName() {
+ return packageName;
+ }
+
+ @NonNull
+ @Override
+ public String getSourceGenTaskName() {
+ return "TODO";
+ }
+
+ @NonNull
+ @Override
+ public String getAssembleTaskName() {
+ return assembleTaskName;
+ }
+
+ @NonNull
+ @Override
+ public List<File> getGeneratedSourceFolders() {
+ return generatedSourceFolders;
+ }
+
+ @NonNull
+ @Override
+ public List<File> getGeneratedResourceFolders() {
+ return generatedResourceFolders;
+ }
+
+ @NonNull
+ @Override
+ public File getClassesFolder() {
+ return classesFolder;
+ }
+
+ @NonNull
+ @Override
+ public Dependencies getDependencies() {
+ return dependencies;
+ }
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java b/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java
index fe5caec..84d0fd6 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java
@@ -21,6 +21,8 @@ import com.android.build.gradle.model.AndroidProject;
import com.android.build.gradle.model.BuildTypeContainer;
import com.android.build.gradle.model.ProductFlavorContainer;
import com.android.build.gradle.model.Variant;
+import com.android.builder.model.AaptOptions;
+import com.android.builder.model.SigningConfig;
import com.google.common.collect.Maps;
import java.io.Serializable;
@@ -41,6 +43,8 @@ class DefaultAndroidProject implements AndroidProject, Serializable {
private final String compileTarget;
@NonNull
private final List<String> bootClasspath;
+ @NonNull
+ private final List<SigningConfig> signingConfigs;
private final boolean isLibrary;
private final Map<String, BuildTypeContainer> buildTypes = Maps.newHashMap();
@@ -52,11 +56,13 @@ class DefaultAndroidProject implements AndroidProject, Serializable {
DefaultAndroidProject(@NonNull String modelVersion,
@NonNull String name, @NonNull String compileTarget,
@NonNull List<String> bootClasspath,
+ @NonNull List<SigningConfig> signingConfigs,
boolean isLibrary) {
this.modelVersion = modelVersion;
this.name = name;
this.compileTarget = compileTarget;
this.bootClasspath = bootClasspath;
+ this.signingConfigs = signingConfigs;
this.isLibrary = isLibrary;
}
@@ -138,4 +144,16 @@ class DefaultAndroidProject implements AndroidProject, Serializable {
public List<String> getBootClasspath() {
return bootClasspath;
}
+
+ @NonNull
+ @Override
+ public List<SigningConfig> getSigningConfigs() {
+ return signingConfigs;
+ }
+
+ @NonNull
+ @Override
+ public AaptOptions getAaptOptions() {
+ return null;
+ }
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy
index 95b6425..d63665f 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy
@@ -27,10 +27,13 @@ import com.android.build.gradle.internal.variant.BaseVariantData
import com.android.build.gradle.internal.variant.LibraryVariantData
import com.android.build.gradle.internal.variant.TestVariantData
import com.android.build.gradle.model.AndroidProject
+import com.android.build.gradle.model.ArtifactInfo
import com.android.build.gradle.model.BuildTypeContainer
import com.android.build.gradle.model.ProductFlavorContainer
import com.android.builder.DefaultProductFlavor
import com.android.builder.SdkParser
+import com.android.builder.VariantConfiguration
+import com.android.builder.model.SigningConfig
import com.android.builder.model.SourceProvider
import com.google.common.collect.Lists
import org.gradle.api.Project
@@ -39,7 +42,6 @@ import org.gradle.tooling.provider.model.ToolingModelBuilder
import java.util.jar.Attributes
import java.util.jar.Manifest
-
/**
* Builder for the custom Android model.
*/
@@ -56,8 +58,12 @@ public class ModelBuilder implements ToolingModelBuilder {
LibraryPlugin libPlugin = null
BasePlugin basePlugin = appPlugin
+ Collection<SigningConfig> signingConfigs
+
if (appPlugin == null) {
basePlugin = libPlugin = getPlugin(project, LibraryPlugin.class)
+ } else {
+ signingConfigs = appPlugin.extension.signingConfigs
}
if (basePlugin == null) {
@@ -65,13 +71,22 @@ public class ModelBuilder implements ToolingModelBuilder {
return null
}
+ if (libPlugin != null) {
+ signingConfigs = Collections.singletonList(libPlugin.extension.debugSigningConfig)
+ }
SdkParser sdkParser = basePlugin.getLoadedSdkParser()
- List<String> bootClasspath = basePlugin.runtimeJarList;
+ List<String> bootClasspath = basePlugin.runtimeJarList
String compileTarget = sdkParser.target.hashString()
- DefaultAndroidProject androidProject = new DefaultAndroidProject(getModelVersion(),
- project.name, compileTarget, bootClasspath, libPlugin != null)
+ //noinspection GroovyVariableNotAssigned
+ DefaultAndroidProject androidProject = new DefaultAndroidProject(
+ getModelVersion(),
+ project.name,
+ compileTarget,
+ bootClasspath,
+ cloneSigningConfigs(signingConfigs),
+ libPlugin != null)
.setDefaultConfig(createPFC(basePlugin.defaultConfigData))
if (appPlugin != null) {
@@ -79,7 +94,7 @@ public class ModelBuilder implements ToolingModelBuilder {
androidProject.addBuildType(createBTC(btData))
}
for (ProductFlavorData pfData : appPlugin.productFlavors.values()) {
- androidProject.addProductFlavors(createPFC(pfData));
+ androidProject.addProductFlavors(createPFC(pfData))
}
} else if (libPlugin != null) {
@@ -96,7 +111,6 @@ public class ModelBuilder implements ToolingModelBuilder {
return androidProject
}
-
@NonNull
private static String getModelVersion() {
Class clazz = AndroidProject.class
@@ -107,12 +121,12 @@ public class ModelBuilder implements ToolingModelBuilder {
return "unknown"
}
String manifestPath = classPath.substring(0, classPath.lastIndexOf("!") + 1) +
- "/META-INF/MANIFEST.MF";
- Manifest manifest = new Manifest(new URL(manifestPath).openStream());
- Attributes attr = manifest.getMainAttributes();
- String version = attr.getValue("Model-Version");
+ "/META-INF/MANIFEST.MF"
+ Manifest manifest = new Manifest(new URL(manifestPath).openStream())
+ Attributes attr = manifest.getMainAttributes()
+ String version = attr.getValue("Model-Version")
if (version != null) {
- return version;
+ return version
}
return "unknown"
@@ -126,27 +140,41 @@ public class ModelBuilder implements ToolingModelBuilder {
testVariantData = variantData.testVariantData
}
+ ArtifactInfo mainArtifact = createArtifactInfo(variantData)
+ ArtifactInfo testArtifact = testVariantData != null ? createArtifactInfo(testVariantData) : null
+
VariantImpl variant = new VariantImpl(
variantData.name,
variantData.baseName,
- variantData.assembleTask.name,
- testVariantData?.assembleTask?.name,
variantData.variantConfiguration.buildType.name,
getProductFlavorNames(variantData),
ProductFlavorImpl.cloneFlavor(variantData.variantConfiguration.mergedFlavor),
+ mainArtifact,
+ testArtifact)
+
+ return variant
+ }
+
+ private static ArtifactInfo createArtifactInfo(@NonNull BaseVariantData variantData) {
+ VariantConfiguration vC = variantData.variantConfiguration
+
+ SigningConfig signingConfig = vC.signingConfig
+ String signingConfigName = null
+ if (signingConfig != null) {
+ signingConfigName = signingConfig.name
+ }
+
+ return new ArtifactInfoImpl(
+ variantData.assembleTask.name,
variantData.outputFile,
- testVariantData?.outputFile,
- variantData.variantConfiguration.isSigningReady(),
+ vC.isSigningReady(),
+ signingConfigName,
+ vC.packageName,
getGeneratedSourceFolders(variantData),
- getGeneratedSourceFolders(testVariantData),
getGeneratedResourceFolders(variantData),
- getGeneratedResourceFolders(testVariantData),
variantData.javaCompileTask.destinationDir,
- DependenciesImpl.cloneDependencies(variantData.variantDependency),
- DependenciesImpl.cloneDependencies(testVariantData?.variantDependency),
+ DependenciesImpl.cloneDependencies(variantData.variantDependency)
)
-
- return variant;
}
@NonNull
@@ -157,7 +185,7 @@ public class ModelBuilder implements ToolingModelBuilder {
flavorNames.add(flavor.name)
}
- return flavorNames;
+ return flavorNames
}
@NonNull
@@ -210,6 +238,29 @@ public class ModelBuilder implements ToolingModelBuilder {
SourceProviderImpl.cloneProvider((SourceProvider) buildTypeData.sourceSet))
}
+ @NonNull
+ private static List<SigningConfig> cloneSigningConfigs(Collection<SigningConfig> signingConfigs) {
+ List<SigningConfig> results = Lists.newArrayListWithCapacity(signingConfigs.size())
+
+ for (SigningConfig signingConfig : signingConfigs) {
+ results.add(createSigningConfig(signingConfig))
+ }
+
+ return results
+ }
+
+ @NonNull
+ private static SigningConfig createSigningConfig(SigningConfig signingConfig) {
+ return new SigningConfigImpl(
+ signingConfig.getName(),
+ signingConfig.getStoreFile(),
+ signingConfig.getStorePassword(),
+ signingConfig.getKeyAlias(),
+ signingConfig.getKeyPassword(),
+ signingConfig.getStoreType(),
+ signingConfig.isSigningReady())
+ }
+
/**
* Safely queries a project for a given plugin class.
* @param project the project to query
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/SigningConfigImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/model/SigningConfigImpl.java
new file mode 100644
index 0000000..06e219c
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/SigningConfigImpl.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.build.gradle.internal.model;
+
+import com.android.annotations.NonNull;
+import com.android.annotations.Nullable;
+import com.android.builder.model.SigningConfig;
+
+import java.io.File;
+import java.io.Serializable;
+
+/**
+ * Implementation of SigningConfig that is serializable. Objects used in the DSL cannot be
+ * serialized.
+ */
+class SigningConfigImpl implements SigningConfig, Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @NonNull
+ private final String name;
+ @Nullable
+ private final File storeFile;
+ @Nullable
+ private final String storePassword;
+ @Nullable
+ private final String keyAlias;
+ @Nullable
+ private final String keyPassword;
+ @Nullable
+ private final String storeType;
+ private final boolean signingReady;
+
+ SigningConfigImpl(@NonNull String name,
+ @Nullable File storeFile,
+ @Nullable String storePassword,
+ @Nullable String keyAlias,
+ @Nullable String keyPassword,
+ @Nullable String storeType,
+ boolean signingReady) {
+
+ this.name = name;
+ this.storeFile = storeFile;
+ this.storePassword = storePassword;
+ this.keyAlias = keyAlias;
+ this.keyPassword = keyPassword;
+ this.storeType = storeType;
+ this.signingReady = signingReady;
+ }
+
+ @NonNull
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Nullable
+ @Override
+ public File getStoreFile() {
+ return storeFile;
+ }
+
+ @Nullable
+ @Override
+ public String getStorePassword() {
+ return storePassword;
+ }
+
+ @Nullable
+ @Override
+ public String getKeyAlias() {
+ return keyAlias;
+ }
+
+ @Nullable
+ @Override
+ public String getKeyPassword() {
+ return keyPassword;
+ }
+
+ @Nullable
+ @Override
+ public String getStoreType() {
+ return storeType;
+ }
+
+ @Override
+ public boolean isSigningReady() {
+ return signingReady;
+ }
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/VariantImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/model/VariantImpl.java
index c2e41c7..cffc10f 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/model/VariantImpl.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/VariantImpl.java
@@ -18,11 +18,10 @@ package com.android.build.gradle.internal.model;
import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
-import com.android.build.gradle.model.Dependencies;
+import com.android.build.gradle.model.ArtifactInfo;
import com.android.build.gradle.model.Variant;
import com.android.builder.model.ProductFlavor;
-import java.io.File;
import java.io.Serializable;
import java.util.List;
@@ -37,69 +36,30 @@ class VariantImpl implements Variant, Serializable {
@NonNull
private final String displayName;
@NonNull
- private final String assembleTaskName;
- @Nullable
- private final String assembleTestTaskName;
- @NonNull
private final String buildTypeName;
@NonNull
private final List<String> productFlavorNames;
@NonNull
private final ProductFlavor mergedFlavor;
@NonNull
- private final File outputFile;
- @Nullable
- private final File testOutputFile;
- private final boolean isSigned;
- @NonNull
- private final List<File> generatedSourceFolders;
- @Nullable
- private final List<File> generatedTestSourceFolders;
- @NonNull
- private final List<File> generatedResourceFolders;
+ private final ArtifactInfo mainArtifactInfo;
@Nullable
- private final List<File> generatedTestResourceFolders;
- @NonNull
- private final File classesFolder;
- @NonNull
- private final Dependencies dependencies;
- @NonNull
- private final Dependencies testDependencies;
+ private final ArtifactInfo testArtifactInfo;
VariantImpl(@NonNull String name,
@NonNull String displayName,
- @NonNull String assembleTaskName,
- @Nullable String assembleTestTaskName,
@NonNull String buildTypeName,
@NonNull List<String> productFlavorNames,
@NonNull ProductFlavorImpl mergedFlavor,
- @NonNull File outputFile,
- @Nullable File testOutputFile,
- boolean isSigned,
- @NonNull List<File> generatedSourceFolders,
- @Nullable List<File> generatedTestSourceFolders,
- @NonNull List<File> generatedResourceFolders,
- @Nullable List<File> generatedTestResourceFolders,
- @NonNull File classesFolder,
- @NonNull Dependencies dependencies,
- @NonNull Dependencies testDependencies) {
+ @NonNull ArtifactInfo mainArtifactInfo,
+ @Nullable ArtifactInfo testArtifactInfo) {
this.name = name;
this.displayName = displayName;
- this.assembleTaskName = assembleTaskName;
- this.assembleTestTaskName = assembleTestTaskName;
this.buildTypeName = buildTypeName;
this.productFlavorNames = productFlavorNames;
this.mergedFlavor = mergedFlavor;
- this.outputFile = outputFile;
- this.testOutputFile = testOutputFile;
- this.isSigned = isSigned;
- this.generatedSourceFolders = generatedSourceFolders;
- this.generatedTestSourceFolders = generatedTestSourceFolders;
- this.generatedResourceFolders = generatedResourceFolders;
- this.generatedTestResourceFolders = generatedTestResourceFolders;
- this.classesFolder = classesFolder;
- this.dependencies = dependencies;
- this.testDependencies = testDependencies;
+ this.mainArtifactInfo = mainArtifactInfo;
+ this.testArtifactInfo = testArtifactInfo;
}
@Override
@@ -114,35 +74,6 @@ class VariantImpl implements Variant, Serializable {
return displayName;
}
- @NonNull
- @Override
- public String getAssembleTaskName() {
- return assembleTaskName;
- }
-
- @Nullable
- @Override
- public String getAssembleTestTaskName() {
- return assembleTestTaskName;
- }
-
- @Override
- @NonNull
- public File getOutputFile() {
- return outputFile;
- }
-
- @Nullable
- @Override
- public File getOutputTestFile() {
- return testOutputFile;
- }
-
- @Override
- public boolean isSigned() {
- return isSigned;
- }
-
@Override
@NonNull
public String getBuildType() {
@@ -163,43 +94,13 @@ class VariantImpl implements Variant, Serializable {
@NonNull
@Override
- public List<File> getGeneratedSourceFolders() {
- return generatedSourceFolders;
- }
-
- @Nullable
- @Override
- public List<File> getGeneratedTestSourceFolders() {
- return generatedTestSourceFolders;
- }
-
- @NonNull
- @Override
- public List<File> getGeneratedResourceFolders() {
- return generatedResourceFolders;
+ public ArtifactInfo getMainArtifactInfo() {
+ return mainArtifactInfo;
}
@Nullable
@Override
- public List<File> getGeneratedTestResourceFolders() {
- return generatedTestResourceFolders;
- }
-
- @NonNull
- @Override
- public File getClassesFolder() {
- return classesFolder;
- }
-
- @NonNull
- @Override
- public Dependencies getDependencies() {
- return dependencies;
- }
-
- @NonNull
- @Override
- public Dependencies getTestDependencies() {
- return testDependencies;
+ public ArtifactInfo getTestArtifactInfo() {
+ return testArtifactInfo;
}
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/SigningReportTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/SigningReportTask.groovy
index d07117c..9d7c170 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/SigningReportTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/SigningReportTask.groovy
@@ -18,10 +18,10 @@ package com.android.build.gradle.internal.tasks
import com.android.build.gradle.internal.dsl.SigningConfigDsl
import com.android.build.gradle.internal.variant.BaseVariantData
+import com.android.builder.model.SigningConfig
import com.android.builder.signing.CertificateInfo
import com.android.builder.signing.KeystoreHelper
import com.android.builder.signing.KeytoolException
-import com.android.builder.signing.SigningConfig
import com.google.common.collect.Maps
import org.gradle.api.tasks.TaskAction
import org.gradle.logging.StyledTextOutput
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ValidateSigningTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ValidateSigningTask.groovy
index cfc7e27..d506f04 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ValidateSigningTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ValidateSigningTask.groovy
@@ -16,12 +16,13 @@
package com.android.build.gradle.internal.tasks
+import com.android.builder.model.SigningConfig
import com.android.builder.signing.KeystoreHelper
-import com.android.builder.signing.SigningConfig
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
import org.gradle.tooling.BuildException
+
/**
* A validate task that creates the debug keystore if it's missing.
* It only creates it if it's in the default debug keystore location.
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessAppManifest.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessAppManifest.groovy
index d0cf411..72ddcd8 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessAppManifest.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessAppManifest.groovy
@@ -37,7 +37,7 @@ public class ProcessAppManifest extends ProcessManifest {
List<ManifestDependencyImpl> libraries
@Input @Optional
- String packageName
+ String packageNameOverride
@Input
int versionCode
@@ -57,7 +57,7 @@ public class ProcessAppManifest extends ProcessManifest {
getMainManifest(),
getManifestOverlays(),
getLibraries(),
- getPackageName(),
+ getPackageNameOverride(),
getVersionCode(),
getVersionName(),
getMinSdkVersion(),