2015-09-22 13 views
10

I Gradle Android Experimental-Plugin in der folgenden Projektstruktur bin mit:Gradle (android experimentelle Plugin) ignoriert ein Projekt Abhängigkeit

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-Bibliothek/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") 
    } 
} 

Die Bibliothek Projekt baut völlig in Ordnung. In Android Studio wird kein Fehler angezeigt. Wenn Sie jedoch versuchen, dieses Projekt mit Gradle zu erstellen, versucht es nur, das app-Projekt zu erstellen, und wird die my-library-Abhängigkeit praktisch ignorieren, die Klassenfehler nicht darlegt.

Wie löst man das?

+1

es aussieht Wie ein Plugin-Problem, haben Sie einen Fehlerbericht eingereicht? – blebleble

Antwort

-3

Konfrontiert das gleiche Problem. Ich umgehe es, indem ich das App-Submodul in etwas anderes umbenenne. So wird die Projektstruktur

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

settings.gradle:

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

Das funktioniert bei mir nicht, andere Lösung? –

5

Anscheinend ist es ein Bug/Feature nicht in der Build-Plugin implementiert.

Ich fand nur einen dreckigen Workaround, um die erzeugte aar direkt zu verknüpfen.

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

stand ich genau das gleiche Problem, und fand schließlich heraus, dass der Pfad zu den NDK Quellen in meiner Bibliothek Projekt falsch war, und dass ich hinzufügen musste:

dependencies { 
    project ":myHybridLib" 
} 

in der android.sources.main.jni des Hauptprojekts.

Nach der Korrektur dieser Fehler, alles kompiliert gut.

0

Änderung my_library/build.gradle etwas wie folgt aus:

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

für weitere Informationen über Struktur dieses Projekt in Github sehen, verwendet es experimentelle v0.4.0 in zwei Android-Modul:

https://github.com/frogermcs/FlatBuffs

Verwandte Themen