Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Gradle (plugin experimental androide) ignora una dependencia del proyecto

Estoy utilizando Gradle Android Experimental plugin en la siguiente estructura del proyecto:

Root Project |-- app |-- my-library 

Settings.gradle

 include ':my-library', ':app' 

Construir un gradiente

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.2.0' } } allprojects { repositories { jcenter() } } 

App / build.gradle

 apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.0" defaultConfig.with { applicationId = "a.bundle.id" minSdkVersion.apiLevel = 15 targetSdkVersion.apiLevel = 23 versionCode = 1 versionName = "1.0" } } android.buildTypes { release { minifyEnabled = false proguardFiles += file('proguard-rules.pro') } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.0' compile project(':my-library') } 

Mi-biblioteca / build.gradle

 apply plugin: 'com.android.model.library' model { android { compileSdkVersion = 'android-23' buildToolsVersion = '23.0.1' defaultConfig.with { minSdkVersion.apiLevel = 15 } } android.buildTypes { release { minifyEnabled = false proguardFiles += file('proguard-rules.txt') } } android.ndk { moduleName = "xxx" CFlags += "-I" + "${project.buildDir}".toString() + "/../src/main/jni/libabecs/include" CFlags += "-std=gnu99" } android.sources { main { jni { source { srcDir 'src/main/jni/libxxx/src' } } } } android.productFlavors { 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" } create("all") } } 

El proyecto de la biblioteca se desarrolla perfectamente. En Android Studio, no muestra ningún error. Sin embargo, al intentar construir este proyecto con Gradle, sólo intentará construir el proyecto de la app y prácticamente ignorará la dependencia de my-library , haciendo que la clase no encuentre errores.

¿Cómo resolver esto?

  • La compilación de código nativo de Android Studio es lenta
  • Mezcla de complementos androides de gradle y gradle-experimental
  • Cómo utilizar bibliotecas extra * .so en Android Studio y NDK
  • Agregue el producto a la experimental Android gradle plugin library
  • Android gradle-experimental con enlace de datos no funciona?
  • 4 Solutions collect form web for “Gradle (plugin experimental androide) ignora una dependencia del proyecto”

    Aparentemente es un error / característica no implementado en el complemento de compilación.

    Sólo encontré una solución sucia para vincular el aar generado directamente.

    Build.gradle (someappname)

     repositories { flatDir { dirs '../my-library/build/outputs/aar' } } dependencies { compile project(':my-library') compile(name:'my-library-{flavour}', ext:'aar') //the rest } 

    Me enfrenté al mismo problema, y ​​finalmente se enteró de que el camino a las fuentes ndk en mi proyecto de biblioteca estaba mal, y que tuve que añadir:

     dependencies { project ":myHybridLib" } 

    En el android.sources.main.jni del proyecto principal.

    Después de corregir esos errores, todo se compila bien.

    Cambie my_library/build.gradle a algo como esto:

     apply plugin: 'com.android.model.library' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.1" defaultConfig.with { minSdkVersion.apiLevel = 15 targetSdkVersion.apiLevel = 23 } } android.ndk { moduleName = "FlatBuffersParser" cppFlags.addAll(['-std=c++11', '-fexceptions', '-Wall', '-Wno-literal-suffix']) cppFlags.add("-I${file("src/main/jni/flatbufferslib")}".toString()) ldLibs.addAll(["android", "log"]) stl = "gnustl_shared" } } 

    Para más información sobre la estructura ver este proyecto en github, utiliza experimental v0.4.0 en dos android módulo:

    https://github.com/frogermcs/FlatBuffs

    Frente a la misma cuestión. Yo lo soluciono cambiando el nombre del submódulo de la aplicación a otra cosa. Así, la estructura del proyecto será

     Proyecto raíz
     | --un nombre de la aplicación
     Mi biblioteca
    

    Settings.gradle :

     Include ': my-library', ': someappname'
    
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.