2015-09-22 20 views
10

Tôi đang sử dụng Gradle Android nghiệm plugin trong cơ cấu dự án sau:Gradle (android Plugin thử nghiệm) bỏ qua một sự phụ thuộc dự án

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-thư viện dự án/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") 
    } 
} 

Thư viện được xây dựng hoàn toàn tốt đẹp. Trong Android Studio, nó không hiển thị bất kỳ lỗi nào. Tuy nhiên, khi cố gắng xây dựng dự án này với Gradle, nó sẽ chỉ cố gắng xây dựng dự án app và thực tế sẽ bỏ qua sự phụ thuộc my-library, hiển thị lỗi không tìm thấy lớp.

Cách giải quyết vấn đề này?

+1

nó trông như một vấn đề về plugin, bạn đã gửi báo cáo lỗi chưa? – blebleble

Trả lời

-3

Đối mặt với cùng một vấn đề. Tôi giải quyết nó bằng cách đổi tên mô-đun ứng dụng thành một cái gì đó khác. Vì vậy, cơ cấu dự án sẽ

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

settings.gradle:

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

Điều này không phù hợp với tôi, bất kỳ giải pháp nào khác? –

5

Rõ ràng đó là một lỗi/tính năng không được thực hiện trong việc xây dựng plugin.

Tôi chỉ tìm thấy cách giải quyết dơ bẩn để liên kết trực tiếp với aar được tạo ra.

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

tôi phải đối mặt với vấn đề chính xác cùng, và cuối cùng phát hiện ra rằng đường dẫn đến các nguồn ndk trong dự án thư viện của tôi đã sai, và rằng tôi phải thêm:

dependencies { 
    project ":myHybridLib" 
} 

trong android.sources.main.jni của dự án chính.

Sau khi sửa những lỗi đó, mọi thứ sẽ biên dịch tốt.

0

thay đổi my_library/build.gradle một cái gì đó như thế này:

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

để biết thêm về cấu trúc xem dự án này trong github, nó sử dụng v0.4.0 thử nghiệm trong hai mô-đun android:

https://github.com/frogermcs/FlatBuffs

Các vấn đề liên quan