Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android studio with experimental gradle 0.2.0

I am trying to setup a basic ndk build with the latest version of android studio at this moment. Trying to follow this tutorial

enter image description here

This is my gradle-wrapper.properties

#Thu Sep 17 14:22:34 CST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip

This is the project build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Here is my module's build.gradle

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.1"

        defaultConfig.with {
            applicationId = "me.blubee.testnative_exp"
            minSdkVersion = 10
            targetSdkVersion = 23
            versionCode = 1
            versionName = "1.0"
        }

        buildConfigFields.with {
            create() {
                type = "int"
                name = "VALUE"
                value = "1"
            }
        }

        android.buildTypes {
            release {
                minifyEnabled = false
                proguardFiles += file('proguard-rules.pro')
            }
        }

        android.productFlavors {
            create("flavor1") {
                applicationId = 'com.app'
            }
        }

        android.sources {
            main {
                java {
                    source {
                        srcDir 'src'
                    }
                }
            }
        }

    }
}

my project structure looks like this:

APP
Java/
Java/android.support
Java/com.test.test_experimental
Java/com.test.test_experimental/R
Java/com.test.test_experimental
Java/com.test.test_experimentalBuildConfig
Java/com.test.test_experimental
Java/com.test.test_experimental/MainActivity
tests/
tests/com.test.test_experimental
tests/com.test.test_experimental/ApplicationTest.java
tests/com.test.test_experimental
tests/com.test.test_experimental/BuildConfig.java
resources/
test-resources
gradle/scripts/

I am getting these errors:

2:51:31 PM Gradle sync started
2:51:34 PM Gradle sync failed: Unable to load class 'com.android.build.gradle.managed.ProductFlavor_Impl'.
           Consult IDE log for more details (Help | Show Log)

Error:Unable to load class 'com.android.build.gradle.managed.ProductFlavor_Impl'.
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
<a href="syncProject">Re-download dependencies and sync project (requires network)</a></li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
<a href="stopGradleDaemons">Stop Gradle build processes (requires restart)</a></li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.


Brother:TestNative_exp blubee$ ./gradlew clean --stacktrack

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/bb/TestNative_exp/app/build.gradle' line: 10

* What went wrong:
A problem occurred configuring project ':app'.
> Exception thrown while executing model rule: model.android
   > Cannot set readonly property: minSdkVersion for class: com.android.build.gradle.managed.ProductFlavor_Impl

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug                                                                             option to get more log output.

BUILD FAILED

Total time: 2.619 secs

line #10 is: minSdkVersion = 10 You can see the whole file in the build.gradle that i put above.

edit

As @unbekant pointed out in his comment and the link to this post

The min and target sdk values should be set like this:

minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 22

I tried that as well, I get this error:

* What went wrong:
A problem occurred configuring project ':app'.
> Exception thrown while executing model rule: model.android
   > No such property: buildConfigFields for class: com.android.build.gradle.managed.AndroidConfig

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug                                                                           option to get more log output.

BUILD FAILED

What am I doing wrong?

like image 447
user1610950 Avatar asked Mar 14 '23 18:03

user1610950


1 Answers

You have to put these blocks outside the android block.

android.buildTypes
android.sources
android.productFlavors

Also the buildConfigFields.with should be inside the defaultConfig or inside the buildTypes or productFlavors:

Something like:

model {
    android {
        compileSdkVersion = 22
        buildToolsVersion = "22.0.1"

        defaultConfig.with {
            //----
            minSdkVersion.apiLevel = 10
            targetSdkVersion.apiLevel = 23

            buildConfigFields.with {
                create() {
                    //....
                }
            }
        }
    }
    android.buildTypes {
        release {
            //
        }
    }
    android.productFlavors {
       //
    }

    // Configures source set directory.
    android.sources {
        //
    }
}

Also, the last version is 0.2.1.

classpath 'com.android.tools.build:gradle-experimental:0.2.1'
like image 193
Gabriele Mariotti Avatar answered Mar 20 '23 09:03

Gabriele Mariotti