Android Studio 1.3 gradle插件在源集中定义jni和jniLibs时返回错误
找不到属性jni和源集“main”Android Studio 1.3 gradle插件在源集中定义jni和jniLibs时返回错误,android,android-studio,gradle,Android,Android Studio,Gradle,找不到属性jni和源集“main” apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 21 buildToolsVersion = "22.0.1" defaultConfig.with { applicationId = "com.example.native_activity"
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 21
buildToolsVersion = "22.0.1"
defaultConfig.with {
applicationId = "com.example.native_activity"
minSdkVersion.apiLevel = 9
targetSdkVersion.apiLevel = 9
}
sourceSets.main {
jni.srcDirs = [] // This prevents the auto generation of Android.mk
jniLibs.srcDir = 'src/main/libs'
// This is not necessary unless you have precompiled libraries in your project.
}
}
以下是stacktrace:
Caused by: org.gradle.model.internal.core.ModelRuleExecutionException: Exception thrown while executing model rule: model.android
at org.gradle.model.internal.registry.DefaultModelRegistry.fireMutation(DefaultModelRegistry.java:485)
at org.gradle.model.internal.registry.DefaultModelRegistry.access$1500(DefaultModelRegistry.java:45)
at org.gradle.model.internal.registry.DefaultModelRegistry$RunModelAction.apply(DefaultModelRegistry.java:1464)
at org.gradle.model.internal.registry.DefaultModelRegistry.transitionTo(DefaultModelRegistry.java:341)
at org.gradle.model.internal.registry.DefaultModelRegistry.transition(DefaultModelRegistry.java:419)
at org.gradle.model.internal.registry.DefaultModelRegistry.atStateOrMaybeLater(DefaultModelRegistry.java:183)
at org.gradle.model.internal.registry.DefaultModelRegistry.atStateOrLater(DefaultModelRegistry.java:175)
at org.gradle.execution.TaskNameResolver.selfClose(TaskNameResolver.java:101)
at org.gradle.execution.TaskNameResolver.selfClosedTasksNode(TaskNameResolver.java:114)
... 60 more
Caused by: org.gradle.api.internal.MissingMethodException: Could not find method main() for arguments [build_f1cmjkxjjzysskbrs6852ixyj$_run_closure1_closure2_closure7@8c09fa7] on SourceSet container.
在过去的两个小时里,我疯狂地在谷歌上搜索…你似乎在尝试使用grade实验插件 确保您的
渐变包装中有2.5级。属性
:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
在项目的build.gradle
dependencies标记中
classpath 'com.android.tools.build:gradle-experimental:0.1.0'
与其猜测很多事情,不如让我将您引向《用户指南》,其中的文档详细解释了从标准插件到实验插件的迁移
试试这些修复方法。发布更多详细信息如果这些对您不起作用,我会尽力帮助您。:) 正如阿瓦尼什所说的——非常仔细地一步一步地阅读。要获得更多许可,请查看google提供的中的build.gradle文件
sourceSets.main{}
有不同的语法,应该在android{}
块之外。在您的情况下,它应该如下所示:
model {
android {
//...
}
android.sources {
main {
jniLibs {
source {
srcDirs 'libs'
}
}
}
}
}
就我而言,这与托奇科夫的回答完全相反: 此语法(使用jniLibs外部的android块)给了我一个错误:
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mycompany.myproject"
minSdkVersion 17
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
而这个语法-内置android block-修复了它:
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mycompany.myproject"
minSdkVersion 17
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
}
以上是从我的实验性ndk项目中复制的,这对我很有用。
请参阅android.sources.main的
部分。谢谢。我确实看了一眼。似乎我在做正确的事情的同时仍然犯了这些错误。明天我会再花更多的时间告诉你我的进度(或者没有进度)。2小时lol:)我花了3天时间将NDK和C库与Gradle集成。你解决了这个问题吗?这个垃圾应该可以让人们节省时间…:XT实验插件指南对解决我的错误非常有帮助。然后如何排除特定文件?srcDirs块必须包含在源{}块中!
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.jeremy.test"
minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
//proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFiles.add(file('proguard-android.txt'))
}
}
ndk {
moduleName "hello-android-jni"
}
}
android.sources.main {
java.source.srcDirs = ["src/main/java", "/Users/jeremy/Repositories/hello/src/android/java"]
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}