2015-10-05 14 views
12

Tôi đã có dự án sử dụng plugin gradle thử nghiệm, tức là 0.2.0. Khi tôi không có productFlavor, tôi hoàn toàn có thể tích hợp mô-đun thư viện trong Android Studio và mọi thứ hoạt động hoàn hảo. Nhưng khi thư viện có một productFlavor, tôi dự án chính không tìm thấy các lớp thư viện.Thêm sản phẩmPhải thích thư viện plugin trình độ Android thử nghiệm

Điều này fix dường như không hoạt động với plugin bổ sung thử nghiệm. Có ai có bất kỳ ý tưởng làm thế nào làm cho hương vị làm việc với các plugin mới?

Thư viện:

android.productFlavor { 
    create ('flavor') { 
     ... 
    } 
} 

dự án:

... 

dependencies { 
    compile project(':mylibrary') 
} 

Trả lời

0

Cú pháp là sai.

Với plugin thử nghiệm (0.2.1) hương vị được xác định ngoài android khối và đúng cú pháp là android.productFlavors

model { 
    android { 

    } 

    android.productFlavors { 
     create("flavor") { 

     } 
    } 
} 
+0

Điều này không hoạt động. – dragostis

+0

Ví dụ này có phù hợp với bạn trên '0.2.1' không? Với cú pháp thích hợp, tất nhiên. 'android.productFlavors' trong thư viện và' compile project (': mylibrary') 'trong dự án chính. – dragostis

+0

Cú pháp là chính xác và nó hoạt động tốt với một mô-đun ứng dụng. Tôi không biết làm thế nào nó có thể làm việc với một thư viện. Theo tôi, bạn nên di chuyển hương vị trong mô-đun chính (tôi chưa bao giờ thấy mùi vị bên trong thư viện) –

9

Điều này có thể giúp đỡ?

Thư viện Publication

Theo mặc định thư viện chỉ xuất bản biến thể phát hành. Biến thể này sẽ được sử dụng bởi tất cả các dự án tham chiếu đến thư viện, bất kể biến thể nào họ tự xây dựng là . Đây là giới hạn tạm thời do Các giới hạn về điểm số mà chúng tôi đang nỗ lực xóa bỏ.

Bạn thể kiểm soát biến thể được xuất bản với

android { defaultPublishConfig "debug" } 

Lưu ý rằng tên cấu hình xuất bản tham chiếu này tên biến đầy đủ. Việc phát hành và gỡ lỗi chỉ áp dụng khi không có các hương vị . Nếu bạn muốn thay đổi mặc định biến thể công bố trong khi sử dụng hương vị, bạn sẽ viết:

android {defaultPublishConfig "flavor1Debug" } 

Nó cũng có thể công bố tất cả các biến thể của thư viện. Chúng tôi đang lập kế hoạch cho phép điều này trong khi sử dụng dự án bình thường (như được hiển thị ở trên), nhưng hiện tại không thể thực hiện được cho các hạn chế trong Gradle (chúng tôi cũng đang cố gắng khắc phục). Xuất bản của tất cả các biến thể không được bật theo mặc định. Để giúp họ:

android {publishNonDefault true } 

Điều quan trọng là nhận ra rằng xuất bản nhiều biến thể có nghĩa xuất bản nhiều file aar, thay vì một aar đơn chứa nhiều biến thể. Mỗi bao bì aar chứa một biến thể duy nhất. Xuất bản một biến thể có nghĩa là làm cho aar này có sẵn như là một đầu ra tạo phẩm của dự án Gradle. Điều này sau đó có thể được sử dụng khi xuất bản tới kho lưu trữ maven hoặc khi một dự án khác tạo phụ thuộc vào dự án thư viện..

Gradle có một khái niệm về mặc định" tạo tác này là một trong đó là sử dụng khi viết:

compile project(':libraries:lib2') 

Để tạo ra một sự phụ thuộc vào một tạo tác xuất bản, bạn cần phải xác định cái nào để sử dụng:

dependencies { 
    flavor1Compile project(path: ':lib1', configuration: 'flavor1Release') 
    flavor2Compile project(path: ':lib1', configuration: 'flavor2Release') 
} 

Chú ý:. Lưu ý rằng cấu hình được công bố là một biến thể đầy đủ, kể cả loại xây dựng, và cần phải được tham chiếu như vậy Imp ortant: Khi bật tính năng xuất bản không mặc định, plugin xuất bản Maven sẽ xuất bản các biến thể bổ sung này dưới dạng gói thêm (với trình phân loại). Điều này có nghĩa rằng đây không thực sự là tương thích với việc xuất bản lên kho lưu trữ maven. Bạn nên hoặc là xuất bản một biến thể duy nhất cho một kho lưu trữ HOẶC bật tất cả cấu hình xuất bản cho các phụ thuộc giữa các dự án.

Từ đây: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

+0

Tôi đã thử [this] (http://stackoverflow.com/questions/24860659/multi-flavor-app-based-on-multi-flavor-library-in-android-gradle). – dragostis

0

Những điều phức tạp hơn một chút. Tôi đã thử nghiệm trên gradle thực nghiệm 0.8.0

trên thư viện bạn cần:

model{ 
    android { 
    ... 
    publishNonDefault true 

    productFlavors { 
       create("flavor1") { 
       } 
       create("flavor2") { 
       } 
      } 
    } 
} 

trên ứng dụng bạn cần:

model { 
    android { 
    ... 
    publishNonDefault true 

    productFlavors { 
       create("flavor1") { 
       } 
       create("flavor2") { 
       } 
      } 
    } 
} 
//after the model is closed !! 
configurations { 
    flavor1DebugCompile 
    flavor1ReleaseCompile 

    flavor2DebugCompile 
    flavor2ReleaseCompile 
} 

dependencies { 
... 
flavor1DebugCompile project(path: ':mylibrary', configuration: 'flavor1Debug') 

flavor1ReleaseCompile project(path: ':mylibrary', configuration: 'flavor1Release') 

flavor2DebugCompile project(path: ':mylibrary', configuration: 'flavor2Debug') 

flavor2ReleaseCompile project(path: ':mylibrary', configuration: 'flavor2Release') 

    } 

hy vọng, nếu bạn chạy đầy đủ lắp ráp bạn sẽ nhận được 2 apk, một cho mỗi hương vị. Tôi đã sử dụng "./gradlew build" từ một cmd và nhận chúng. lưu ý rằng đối với lib của bạn, bạn sẽ nhận được một AAR cho mỗi hương vị quá

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