我正在尝试将“https://code.google.com/p/android-serialport-api/”导入Android Studio。由于这个项目涉及ndk,我按照说明从以下链接构建NDK:http://tools.android.com/tech-docs/new-build-system/gradle-experimental
但是在构建之后,我收到了这个错误:
Gradle项目刷新失败
错误:原因:org.gradle.api.internal.ExtensibleDynamicObject
编辑:我安装了2.5 gradle版本 这是我的build.gradle
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig.with {
applicationId = "android_serialport_api.sample"
minSdkVersion.apiLevel = 17
targetSdkVersion.apiLevel = 22
android.ndk {
moduleName = "serial_port"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.txt')
}
}
android.productFlavors {
create("all")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
}
答案 0 :(得分:30)
您可以尝试更改
compileSdkVersion 22
buildToolsVersion "22.0.1"
到
compileSdkVersion = 22
buildToolsVersion = "22.0.1"
和
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
到
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.txt')
}
我有同样的错误,这对我有用。
答案 1 :(得分:1)
不幸的是,支持Android Studio中本机代码开发的NDK预览实现是一个不断变化的目标。即使您使用较旧的,developer.android.com也表示,"支持"结合实验性的Android Gradle插件(来自tools.android.com)和Gradle版本(来自gradle.org),祝你好运。相反,根据developers.android.com,始终使用最新发布的组合和最新指定的模块build.gradle语言语法。
在你的情况下,你混合使用赋值运算符," ="和" + ="。根据您使用的gradle插件和gradle版本支持的组合,它可以在模块build.gradle文件中的任何地方使用赋值运算符,也可以在任何地方使用 - 您必须保持一致,全部或全部。对于" + ="使用方法" .add(...)"代替。
请记住,gradle脚本语言被编译到Java运行时,因此当您看到看起来像Java错误的构建错误时,它可能是问题的gradle脚本。
答案 2 :(得分:0)
当我将参数未正确地从旧gradle语法移动到新的
时,我收到此错误(有cFlags "..."
而不是CFlags += "..."
)
看看,例如在http://tools.android.com/tech-docs/new-build-system/gradle-experimental