Start integration of the builder lib in the gradle plug-in
Xavier Ducrohet [Tue, 21 Aug 2012 19:18:01 +0000 (12:18 -0700)]
First step: move to the BuildType and ProductFlavor classes
from the builder library.

Change-Id: Ib83c590ff7dbf38774022d7539634835de9f31c0

13 files changed:
builder/src/main/java/com/android/builder/BuildType.java
gradle/build.gradle
gradle/src/main/groovy/com/android/build/gradle/AndroidExtension.groovy
gradle/src/main/groovy/com/android/build/gradle/AndroidLibraryExtension.groovy
gradle/src/main/groovy/com/android/build/gradle/AndroidLibraryPlugin.groovy
gradle/src/main/groovy/com/android/build/gradle/AndroidPlugin.groovy
gradle/src/main/groovy/com/android/build/gradle/BuildType.groovy [deleted file]
gradle/src/main/groovy/com/android/build/gradle/ProductFlavor.groovy [deleted file]
gradle/src/main/groovy/com/android/build/gradle/internal/BuildTypeDimension.groovy
gradle/src/main/groovy/com/android/build/gradle/internal/ProductFlavorDimension.groovy
gradle/src/main/groovy/com/android/build/gradle/internal/ProductionAppVariant.groovy
gradle/src/main/groovy/com/android/build/gradle/internal/TestAppVariant.groovy
settings.gradle

index 596fa7b..cba7a4a 100644 (file)
@@ -30,6 +30,8 @@ public class BuildType {
     private boolean mDebugSigningKey;
     private String mPackageNameSuffix = null;
 
+    private boolean mZipAlign = true;
+
     public BuildType(@NonNull String name) {
         this.mName = name;
         if (DEBUG.equals(name)) {
@@ -43,6 +45,7 @@ public class BuildType {
         mDebuggable = true;
         mDebugJniBuild = true;
         mDebugSigningKey = true;
+        mZipAlign = false;
     }
 
     private void initRelease() {
@@ -87,6 +90,14 @@ public class BuildType {
         return mPackageNameSuffix;
     }
 
+    public void setZipAlign(boolean zipAlign) {
+        mZipAlign = zipAlign;
+    }
+
+    public boolean isZipAlign() {
+        return mZipAlign;
+    }
+
     /*
 proguard enabled + rules
 Buildconfig: DEBUG flag + other custom properties?
index 2e4e60c..7608da5 100644 (file)
@@ -4,6 +4,7 @@ apply plugin: 'maven'
 
 dependencies {
     compile gradleApi()
+    compile project(':builder')
     groovy localGroovy()
 }
 
index b9c3f3a..0283245 100644 (file)
@@ -15,6 +15,8 @@
  */
 package com.android.build.gradle
 
+import com.android.builder.BuildType
+import com.android.builder.ProductFlavor
 import org.gradle.api.Action
 import org.gradle.api.NamedDomainObjectContainer
 
index f30f834..65c8f62 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.android.build.gradle
 
+import com.android.builder.BuildType
 import org.gradle.api.Action
 import org.gradle.api.NamedDomainObjectContainer
 
index d4b8cef..002ef03 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.android.build.gradle
 
+import com.android.builder.BuildType
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.plugins.JavaBasePlugin
index 3d53665..cd0f01a 100644 (file)
  */
 package com.android.build.gradle
 
+import org.gradle.internal.reflect.Instantiator
+
+import com.android.build.gradle.internal.AndroidManifest
+import com.android.build.gradle.internal.ApplicationVariant
 import com.android.build.gradle.internal.BuildTypeDimension
 import com.android.build.gradle.internal.ProductFlavorDimension
+import com.android.build.gradle.internal.ProductionAppVariant
+import com.android.build.gradle.internal.TestAppVariant
+import com.android.builder.AndroidBuilder
+import com.android.builder.BuildType
+import com.android.builder.DefaultSdkParser
+import com.android.builder.ProductFlavor
+import com.android.utils.StdLogger
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.plugins.JavaBasePlugin
 import org.gradle.api.tasks.SourceSet
 import org.gradle.api.tasks.compile.Compile
-import com.android.build.gradle.internal.AndroidManifest
-import org.gradle.internal.reflect.Instantiator
-
-import com.android.build.gradle.internal.ApplicationVariant
-import com.android.build.gradle.internal.TestAppVariant
-import com.android.build.gradle.internal.ProductionAppVariant
 
 class AndroidPlugin implements Plugin<Project> {
     private final Set<ProductionAppVariant> variants = []
@@ -37,6 +42,7 @@ class AndroidPlugin implements Plugin<Project> {
     private SourceSet main
     private SourceSet test
     private File sdkDir
+    private AndroidBuilder androidBuilder;
     private AndroidExtension extension
     private AndroidManifest mainManifest
 
@@ -73,9 +79,7 @@ class AndroidPlugin implements Plugin<Project> {
             throw new UnsupportedOperationException("Removing build types is not implemented yet.")
         }
 
-        buildTypes.create('debug') {
-            zipAlign = false
-        }
+        buildTypes.create('debug')
         buildTypes.create('release')
 
         productFlavors.whenObjectAdded { ProductFlavor flavor ->
@@ -112,21 +116,31 @@ class AndroidPlugin implements Plugin<Project> {
 
     private void findSdk(Project project) {
         def localProperties = project.file("local.properties")
-        if (!localProperties) {
-            throw new RuntimeException("No local.properties file found at ${localProperties}.")
-        }
-        Properties properties = new Properties()
-        localProperties.withInputStream { instr ->
-            properties.load(instr)
+        if (localProperties) {
+            Properties properties = new Properties()
+            localProperties.withInputStream { instr ->
+                properties.load(instr)
+            }
+            def sdkDirProp = properties.getProperty('sdk.dir')
+            if (!sdkDirProp) {
+                throw new RuntimeException("No sdk.dir property defined in local.properties file.")
+            }
+            sdkDir = new File(sdkDirProp)
+        } else {
+            sdkDir = System.getProperty("ANDROID_HOME");
+
         }
-        def sdkDirProp = properties.getProperty('sdk.dir')
-        if (!sdkDirProp) {
-            throw new RuntimeException("No sdk.dir property defined in local.properties file.")
+
+        if (sdkDir == null) {
+            throw new RuntimeException("SDK location not found. Define location with sdk.dir in local.properties file or with ANDROID_HOME environment variable.")
         }
-        sdkDir = new File(sdkDirProp)
+
         if (!sdkDir.directory) {
             throw new RuntimeException("The SDK directory '$sdkDir' specified in local.properties does not exist.")
         }
+
+        androidBuilder = new AndroidBuilder(new DefaultSdkParser(sdkDir),
+                new StdLogger(SdkLogger.Level.VERBOSE), true);
     }
 
     private void addBuildType(BuildType buildType) {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BuildType.groovy b/gradle/src/main/groovy/com/android/build/gradle/BuildType.groovy
deleted file mode 100644 (file)
index 5e61996..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2012 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
-
-class BuildType {
-    final String name
-
-    boolean zipAlign = true
-
-    BuildType(String name) {
-        this.name = name
-    }
-}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/ProductFlavor.groovy b/gradle/src/main/groovy/com/android/build/gradle/ProductFlavor.groovy
deleted file mode 100644 (file)
index a8ab5df..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2012 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
-
-class ProductFlavor {
-    final String name
-    String packageName
-    Integer versionCode
-    String versionName
-
-    ProductFlavor(String name) {
-        this.name = name
-    }
-}
-
index 745d66a..95efad5 100644 (file)
@@ -15,7 +15,7 @@
  */
 package com.android.build.gradle.internal
 
-import com.android.build.gradle.BuildType
+import com.android.builder.BuildType
 import org.gradle.api.tasks.SourceSet
 
 class BuildTypeDimension {
index d176911..8d43c35 100644 (file)
@@ -15,7 +15,7 @@
  */
 package com.android.build.gradle.internal
 
-import com.android.build.gradle.ProductFlavor
+import com.android.builder.ProductFlavor
 import org.gradle.api.tasks.SourceSet
 
 class ProductFlavorDimension {
index fffd391..15a22a2 100644 (file)
@@ -15,8 +15,8 @@
  */
 package com.android.build.gradle.internal
 
-import com.android.build.gradle.BuildType
-import com.android.build.gradle.ProductFlavor
+import com.android.builder.BuildType
+import com.android.builder.ProductFlavor
 import org.gradle.api.file.FileCollection
 
 class ProductionAppVariant implements ApplicationVariant {
index 096f3d8..f15806d 100644 (file)
@@ -15,7 +15,7 @@
  */
 package com.android.build.gradle.internal
 
-import com.android.build.gradle.ProductFlavor
+import com.android.builder.ProductFlavor
 import org.gradle.api.file.FileCollection
 
 class TestAppVariant implements ApplicationVariant {
index b9845fa..1928fe1 100644 (file)
@@ -1 +1,2 @@
+include 'builder'
 include 'gradle'