2014-10-21 28 views
5

Tôi có hệ thống xây dựng Android đa dự án. Cấu trúc của dự án như sau:Android gradle: Multi project build, cấp cao nhất build.gradle

Root Dir 
    | 
    settings.gradle 
    | 
    build.gradle 
    | 
    Apps 
     | 
     app 1 
     | 
     build.gradle 
     | 
     app 2 
     | 
     build.gradle 
    | 
    Libs 
     | 
     lib 1 
     | 
     build.gradle 
     | 
     lib 2 
     | 
     build.gradle 

Tất cả ứng dụng và thư viện đều có cấu hình android thông thường.

Ở cấp độ gốc build.gradle tôi có như sau:

subprojects { 
    apply plugin: 'android' 
    android { 
     compileSdkVersion "Google Inc.:Google APIs:19" 
     buildToolsVersion "20.0.0" 

     defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 19 
     } 
    } 
} 

Tiếp theo, tôi nghĩ đến việc thêm dòng sau vào các build.gradle trong ứng dụng 1

apply plugin: 'com.android.application' 

android { 
    sourceSets { 
     main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     } 
    } 
} 

tôi nhận được lỗi sau :

Cannot add extension with name 'android', as there is an extension already registered with that name. 

Trong plugin gradle cho android, có cách nào để có "cấu hình chính android trên "có thể được mở rộng bởi một mô-đun phụ?

+0

Bạn có chắc chắn rằng vấn đề không phải là khi có 'áp dụng plugin' được đặt ở hai vị trí khác nhau, với hai ID plugin khác nhau? –

+0

Có thể là một câu hỏi ngớ ngẩn, ai có thể có phần "android {...}" mà không áp dụng plugin android trong tệp gradle? – pka

+0

Không, nhưng bạn đã áp dụng 'android' cho tất cả các tiểu dự án. –

Trả lời

2

Tôi đã gặp sự cố tương tự - và nó phải liên quan đến cách bạn bao gồm các plugin của mình.

Trong "gốc" của bạn xây dựng tập tin bạn có:

apply plugin: 'android' 

Trong ứng dụng của bạn, bạn có:

apply plugin: 'com.android.application' 

Thay đổi thư mục gốc để phù hợp với các plugin ứng dụng.

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