Android Studio 1.3 gradle plugin devuelve error al definir jni y jniLibs en conjuntos de código fuente
No se pudo encontrar la propiedad jni y el conjunto de fuentes 'main'
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. } }
Aquí está el stacktrace:
- gradle 2.0.0 beta 7 missing
- Android Studio - Creación incremental de Gradle
- ¿Puedo usar Widgets de la biblioteca de soporte de Android L Preview en la versión actual de Android?
- Biblioteca de Android - cómo ensamblar jar con dependencias usando gradle?
- INSTALL_FAILED_DEXOPT Error en Android 5.0 en modo de liberación
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.
Me googled como loco por las últimas 2 horas …
- Cómo evitar la eliminación de símbolos de código nativos para la aplicación de Android
- Gradle crea y despliega tipo de compilación específico
- Android Conflict con dependencia appcompat
- La importación de mi biblioteca de Android en una aplicación no se reconoce como una biblioteca
- Error de compilación de Gradle después de actualizar a 3.0
- Uso de Android L Diseño de materiales en KitKat
- : CheckDebugManifest FAILED => el archivo especificado para la propiedad 'manifest' no existe
- Enlace de datos de Android: No se puede resolver el símbolo
Como dijo Awanish – lea la Guía del Usuario del Plugin Experimental paso a paso MUY cuidadosamente. Para obtener más claridad, compruebe los archivos build.gradle en las muestras ndk proporcionadas por google.
sourceSets.main { }
tiene una sintaxis diferente y debe estar fuera del bloque android { }
. En su caso, debe ser algo como esto:
model { android { //... } android.sources { main { jniLibs { source { srcDirs 'libs' } } } } }
En mi caso fue exactamente lo contrario a tochkov respuesta:
Esta sintaxis – con el jniLibs fuera del bloque android – me dio un error:
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'] } }
Y esta sintaxis – dentro de bloqueo de Android – lo arregló:
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'] } } }
¡Parece que estás intentando usar el plugin experimental de grado!
Asegúrese de tener grado 2.5 en su gradle-wrapper.properties
:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
Y esto en la etiqueta de dependencias build.gradle
su proyecto
classpath 'com.android.tools.build:gradle-experimental:0.1.0'
En lugar de adivinar un montón de cosas, permítanme volver a dirigirla a la guía del usuario, donde la documentación explica la migración del complemento estándar al experimental en detalle. Echa un vistazo aquí!
Pruebe estas correcciones. Publicar más detalles si estos no funcionan para usted, voy a tratar de ayudar. 🙂
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' }
Lo anterior se copia de mi proyecto ndk experimental, esto funciona para mí. Consulte la sección android.sources.main
.
- Diferencia entre el tipo de entrada de texto sin formato y el tipo de entrada Person Name en Editext en android
- Obtener la dirección MAC del dispositivo: cuando el wifi está desactivado