2015-09-22 14 views
10

sto utilizzando plugin di Android Gradle Sperimentale nella seguente struttura del progetto:Gradle (plug-in sperimentale Android) ignora una dipendenza progetto

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

settings.gradle

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

build.gradle

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') 
} 

my-biblioteca del progetto/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") 
    } 
} 

La biblioteca costruisce perfettamente bene. In Android Studio, non mostra alcun errore. Tuttavia, quando si tenta di creare questo progetto con Gradle, tenterà solo di creare il progetto app e praticamente ignorerà la dipendenza my-library, errori di classe di rendering non trovati.

Come risolvere questo?

+1

Sembra come un problema di plugin, hai presentato una segnalazione di bug? – blebleble

risposta

-3

Di fronte allo stesso problema. Ho risolto il problema rinominando il sottomodulo di app in qualcos'altro. Così la struttura del progetto sarà

 
Root Project 
|-- someappname 
|-- my-library 

settings.gradle:

 
include ':my-library', ':someappname' 
+0

Questo non funziona per me, qualsiasi altra soluzione? –

5

A quanto pare si tratta di un bug/caratteristica non implementata nel plugin build.

Ho trovato solo una soluzione sporca per collegare direttamente il toar generato.

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 
} 
0

Ho affrontato lo stesso identico problema, e, infine, ha scoperto che il percorso alle fonti NDK nel mio progetto biblioteca era sbagliato, e che avrei dovuto aggiungere:

dependencies { 
    project ":myHybridLib" 
} 

nel android.sources.main.jni del progetto principale.

Dopo aver corretto questi errori, tutto viene compilato correttamente.

0

cambiamento my_library/build.gradle a qualcosa di simile:

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" 
    } 
} 

per ulteriori informazioni sulla struttura vedere questo progetto in github, utilizza v0.4.0 sperimentale in due moduli Android:

https://github.com/frogermcs/FlatBuffs