Problema al migrar a Gradle Experimental 2.5: no existe tal método AndroidConfig
Acabo de actualizar mi configuración de Android Studio a 1.3 (última versión estable al 31 de agosto de 2015) y necesito usar la última integración de NDK. Mi versión anterior de Android Studio era 1.2.1 (también estable).
SiguiendoGuía experimental de Google Migration to Gradle Me las arreglé para adaptar fácilmente mis diversos guiones gradle.
Sin embargo, Gradle Sync falla con el siguiente error:
Error:No such property: android for class: com.android.build.gradle.managed.ProductFlavor
[Actualización 1 -> ver abajo, error actualizado]
Cuando intentoMake
el proyecto, obtengo un error un poco más detallado:
Error:(17, 1) A problem occurred configuring project ':app'.
> Exception thrown while executing model rule: model.android
> No such property: android for class: com.android.build.gradle.managed.ProductFlavor
La aplicación se refiere al código de la aplicación principal (con actividades y otros).
Usando la funciónF4 > Jumping to Source
abre mibuild.gradle
guión de miapp
proyecto.
Este es el contenido del guión mencionado anteriormente:
apply plugin: 'com.android.model.application' // experimental
model {
android {
compileSdkVersion = 21
buildToolsVersion = '22.0.1'
defaultConfig.with {
applicationId = "company.com.myapplication"
minSdkVersion.apiLevel = 10
targetSdkVersion.apiLevel = 21
versionCode = 1
versionName = "1.0"
// NDK
android.ndk {
moduleName = "MyAwesomeJNILib"
cFlags "-std=c99"
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}
android.productFlavors {
// for detailed abiFilter descriptions, refer to "Supported ABIs" @
// https://developer.android.com/ndk/guides/abis.html#sa
create("arm") {
ndk.abiFilters += "armeabi"
}
create("arm7") {
ndk.abiFilters += "armeabi-v7a"
}
create("arm8") {
ndk.abiFilters += "arm64-v8a"
}
create("x86") {
ndk.abiFilters += "x86"
}
create("x86-64") {
ndk.abiFilters += "x86_64"
}
create("mips") {
ndk.abiFilters += "mips"
}
create("mips-64") {
ndk.abiFilters += "mips64"
}
// To include all cpu architectures, leaves abiFilters empty
create("all")
}
packagingOptions {
exclude 'LICENSE.txt'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.squareup.okhttp:okhttp-android-support:2.4.0'
compile project(':bluetoothmanager')
compile 'joda-time:joda-time:2.8.1'
// Units Testing
//androidTestCompile 'junit:junit:4.12'
compile 'junit:junit:4.12' // experimental
}
Como puede ver, no hay nada muy elegante aquí. Pero puede notar que hay alguna configuración de prueba de unidad:
// Units Testing
//androidTestCompile 'junit:junit:4.12'
compile 'junit:junit:4.12' // experimental
androidTestCompile
no se pudo resolver mientras migraba aGradleExperimental así que modifiqué después de una solución que ya no puedo encontrar (lo siento) donde simplemente pondríacompile
en vez deandroidTestCompile
. Este fue el error:
Error:(71, 0) Gradle DSL method not found: 'androidTestCompile()'
Traté de comparar uno de los ejemplos de NDK de Google (hello-jini
por ejemplo) según lo dispuesto en la guía de referencia ydisponible aquí.
Excepto elpackagingOptions
No pude encontrar ninguna diferencia que fuera responsable de mi error. Traté de eliminarpackagingOptions
pero eso no hizo un solo cambio en absoluto.
[ACTUALIZACIÓN 1]
Notará que el mensaje de error más detallado indica que está en la línea # 17, que es donde declaro miconfiguración de compilación nativa. Arregle el error que eracFlags
debe cambiarse aCFlags
y agregué el=
como lo requiere la nueva versión de Gradle. Esto ayudó, el error ya no aparece pero cambió para:
Error:No such property: android for class: com.android.build.gradle.managed.AndroidConfig