Android工作室用实验gradle 0.2.0

时间:2015-09-17 07:08:14

标签: android android-studio gradle android-gradle build.gradle

我正在尝试使用最新版本的android studio来设置基本的ndk版本。试图关注this tutorial

enter image description here

这是我的 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

这是项目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
}

这是我的模块的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'
                    }
                }
            }
        }

    }
}

我的项目结构如下:

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/

我收到了这些错误:

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

第10行是:minSdkVersion = 10 您可以在我放在上面的build.gradle中看到整个文件。

修改

正如@unbekant在他的评论和this post

的链接中指出的那样

min和target sdk值应设置如下:

minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 22

我也试过了,我收到了这个错误:

* 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

我做错了什么?

2 个答案:

答案 0 :(得分:7)

您必须将这些块放在<{1}}块之外

android

android.buildTypes android.sources android.productFlavors 也应位于buildConfigFields.with内或defaultConfigbuildTypes内:

类似的东西:

productFlavors

此外,最后一个版本是 0.2.1

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 {
        //
    }
}

答案 1 :(得分:0)

@jonagon 这个回购中有一些例子:
https://github.com/googlesamples/android-ndk

可能会尝试:

jni文件夹问题:

  1. 它是gradle实验插件的默认设置,也适用于较旧的c ++支持,不使用gradle-experimental插件(android插件)

  2. 如果您有该文件夹而不使用实验性插件,Gradle认为该应用程序正在使用较旧的android studio c ++支持。它给你的警告&#34; NDK集成在当前插件中被弃用&#34;并建议您使用实验性插件。它可能会沉默:

    • sourceSets.main.jni.srcDirs = []
  3. 或者只是将jni文件夹重命名为其他内容:如果你想在未来使用android-studio cmake / ndk-build,会导致更多麻烦,重命名更好。