2013-07-01 24 views

Trả lời

58

Tôi chỉ cố gắng làm điều này bằng cách có hương vị khác nhau trong tập tin gradle tôi:

free { 
     packageName 'com.sample.free' 
     buildConfigField "boolean", "HAS_AD", "true" 
    } 

    paid { 
     packageName 'com.sample.paid' 
     buildConfigField "boolean", "HAS_AD", "false" 
    } 

và sau đó tôi đã tạo ra một thư mục mới dưới src gọi là "tự do" và theo đó một thư mục có tên "res"

src/ 
+ free/ 
| + res/ 
+ src/ 

và trong thư mục đó tạo ra một tập tin mới "AndroidManifest.xml" với đoạn mã sau vào nó:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.sample" > 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
</manifest> 

Theo Gradle Plugin User Guide trên Android Site Công cụ dự án:

tương tự để xây dựng các loại, hương vị sản phẩm cũng góp phần mã và nguồn lực thông qua sourceSets riêng của họ.

Các quy tắc sau được sử dụng khi giao dịch với tất cả các sourcesets sử dụng để xây dựng một APK duy nhất:

  • Tất cả các mã nguồn (src/*/java) được sử dụng cùng nhau như nhiều thư mục tạo ra một đầu ra duy nhất.
  • Tệp kê khai tất cả được hợp nhất với nhau thành một tệp kê khai duy nhất. Điều này cho phép Product Flavors có các thành phần khác nhau và/hoặc quyền, tương tự như Build Types.
  • Tất cả tài nguyên (phân bổ và nội dung Android) được sử dụng bằng mức độ ưu tiên lớp phủ trong đó Loại xây dựng ghi đè Hương vị sản phẩm, trong đó ghi đè nguồn chính.
  • Mỗi Biến thể xây dựng tạo lớp R của riêng nó (hoặc mã nguồn được tạo khác) từ các tài nguyên. Không có gì được chia sẻ giữa các biến thể .

có nghĩa là bạn có thể tạo thư mục với mỗi tên hương vị dưới src và đặt các tệp tùy chỉnh của bạn vào. Nếu tệp được nói là một lớp học AndroidManifest sẽ hợp nhất nó với tệp kê khai trong chính.

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