2013-11-01 21 views
18

Tôi muốn thay đổi tên phiên bản cho các ứng dụng nhưng chỉ khi đó là bản dựng lỗi.Android - thay đổi tên phiên bản hương vị dựa trên loại xây dựng

(ví dụ: bản dựng lỗi sẽ có các phiên bản như 1.0.1 D (DEBUG) 555 hoặc 1.0.1 P (DEBUG) 555, tuy nhiên tôi muốn bản phát hành chỉ có phiên bản 1.0.1) Làm cách nào tôi có thể đạt được điều này?

Về cơ bản tôi có những xây dựng các loại:

buildTypes { 


    debug { 
     versionNameSuffix " (DEBUG) " + mBuild 

    } 
    release { 
     runProguard true 
     proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), file('proguard-project.txt') 
     signingConfig signingConfigs.release 
    } 
} 

và những hương vị (đối với môi trường api khác nhau):

productFlavors { 
    dev { 
     versionName = android.defaultConfig.versionName + " D" 
    } 
    prod { 
     versionName = android.defaultConfig.versionName + " P" 
    } 
} 

Có cách nào làm thế nào để phát hành xây dựng mà không cần thay đổi sản phẩm hương vị tên phiên bản ?

tôi đã cố gắng để thiết lập tên phiên bản động qua

buildTypes.each { buildType -> 
    if(buildType.name == 'debug') { 
     productFlavors.dev.versionName = android.defaultConfig.versionName + " D" 
    } 
} 

nhưng kết quả này trong

không thể tìm thấy bất động sản 'dev' trên container GroupableProductFlavorDsl.

+0

Chấp nhận câu trả lời của riêng bạn, xin vui lòng. Vì vậy, nó rõ ràng cho cộng đồng, vấn đề đó được giải quyết. –

+0

"Bạn có thể chấp nhận câu trả lời của riêng bạn vào ngày mai" – martinpelant

Trả lời

29

Sau giờ tìm kiếm tôi đã quản lý để loại bỏ tất cả các thay đổi đối với tên phiên bản dành cho việc phát hành xây dựng sử dụng mã này

applicationVariants.all { variant -> 
    if (variant.buildType.name == 'release') { 
     variant.mergedFlavor.versionName = android.defaultConfig.versionName; 
    } 
} 
+0

ký hiệu này (android.defaultConfig.versionName) đã hoạt động đối với tôi cho đến hôm nay tôi đã nâng cấp từ AndroidStudio 0.5.5 lên 0.8.1.Bất cứ ý tưởng nào nên được sử dụng ngay bây giờ thay thế? – Gavriel

+2

I có được một 'không thể tìm thấy tài sản 'applicationVariants' về dự án: ...' lỗi. – Alf

+2

sử dụng applicationVariants.each Thay vì applicationVariants.all – San

3

Build Type phải ghi đè số Product Flavor. Hãy thử tiếp theo.

buildTypes { 

    release { 
     versionName = android.defaultConfig.versionName 
    } 
} 
+5

Tôi đã thử điều đó. Vấn đề là kiểu build không có thuộc tính versionName, chỉ versionNameSuffix. Mã ở trên dẫn đến 'Tạo thuộc tính theo yêu cầu (thuộc tính động a.k.a.) đã được de .0. Vui lòng đọc http://gradle.org/docs/current/dsl/org.gradle.api.plu để thay thế cho các thuộc tính động. Thuộc tính động không được chấp nhận: "versionName" trên "BuildTypeDsl_Decorated ' – martinpelant

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