2015-01-12 23 views
9

Trong ứng dụng hiện tại của tôi, tôi có 2 bản dựng, cho phép gọi chúng là build 1build 2. Tôi hiểu rằng hai hương vị có thể chia sẻ mã common/nguồn lực nhưng cũng có thể có mã và các nguồn lực riêng biệt như sau:Android Studio - Hương vị có thể chia sẻ mã với các hương vị khác không?

Two Flavours Diargram

gì tôi đang cố gắng làm là mở rộng build 2 để nó chia sẻ một số mã với nhau xây dựng (ví dụ: build 3). Hoặc chia sẻ một số mã như sau:

Two Flavours Sharing Code

này sẽ được build2 và xây dựng 3 chia sẻ một số mã/nguồn lực đồng thời cũng có khả năng để có bộ mã duy nhất của mình. Hoặc:

Build 3 Extending Build 2

Ở đây, build 3 được mở rộng build 2 để tất cả các mã và các nguồn lực từ build 2 có sẵn trong cả hai xây dựng nhưng build 3 cũng có thể có riêng của mình độc đáo mã/tài nguyên.

Tôi nghĩ rằng việc mở rộng build 2 là cách tốt nhất (nếu có thể) nhưng mọi lời khuyên hoặc chỉ cho tôi đúng hướng sẽ được đánh giá cao. Tôi đã dành hơn 6 giờ cọ rửa internet mà không có kết quả.

Trả lời

7

Không hỗ trợ tốt cho việc này. Nếu bạn thực sự muốn làm điều đó, bạn có thể khám phá một số tin tặc với các liên kết để cố gắng chia sẻ các thư mục một cách hiệu quả, nhưng điều đó sẽ khiến mọi thứ trở nên khó khăn hơn với điều khiển nguồn và tôi không thể chắc chắn nó sẽ không gây ra vấn đề tinh tế trong bản dựng.

Tôi khuyến khích bạn không cố gắng làm nhiều việc trong hệ thống xây dựng, vì trong thời gian dài nó sẽ làm cho ứng dụng của bạn khó viết và duy trì hơn, đặc biệt kể từ khi IDE không có cơ sở vật chất tốt để xử lý mã trên các hương vị của sản phẩm (ví dụ: nếu bạn mã refactor, không có cách nào để việc tái cấu trúc được áp dụng trên một hương vị sản phẩm không hoạt động, bạn chỉ có thể làm việc với một tại một thời điểm).

Một cách tiếp cận tốt hơn là nên lấy những thứ đó là chung cho Build 2Build 3 và giải nén nó ra thành một mô-đun Library Android đó là một sự phụ thuộc đối với những hương vị nhưng không cho Build 1 hương vị. Các hương vị sản phẩm khác nhau có thể có các phụ thuộc khác nhau và cơ chế đó được hỗ trợ và hoạt động tốt.

+0

Cảm ơn vì điều này. Tôi sẽ rời khỏi nó ngay bây giờ. Tôi không thực sự muốn làm một cách hackery mà sẽ làm phức tạp hơn các codebase. Cảm ơn bạn đã phản hồi nhanh và câu trả lời! –

+0

bạn có thể thử sử dụng 'sourceSets' như [trong câu hỏi này] (http://stackoverflow.com/questions/20974524/with-two-res-directories-per-build-variant-gradle-stopped-tracking-changes-in -r) –

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