2017-07-18 23 views
5

Tôi muốn có versionCode khác cho debug loại bản dựng chứ không phải loại xây dựng ở loại release. Điều này được sử dụng để làm việc bằng cách sử dụng cấu hình từ bên dưới trong plugin Gradle Android v2.3.2 (Gradle v3.3), nhưng hiện không có bất kỳ hiệu ứng nào trong v3.0.0-alpha5 (Gradle v4.1-milestone-1). Bất kỳ ý tưởng nào về những gì đã thay đổi trong plugin Gradle mới nhất khiến cho nó bỏ qua thuộc tính variant.mergedFlavor.versionCode?Vấn đề đầu ra biến thể alpha phiên bản 3.0.0

buildTypes {  
     debug { 
       applicationIdSuffix ".debug" 
       versionNameSuffix "-" + buildTime() 
       android.applicationVariants.all { variant -> 
        if (variant.buildType.name != buildTypes.debug.name) return 
        variant.outputs.all { 
         outputFileName = "${archivesBaseName}-${variant.name}-v${variant.versionName}-signed.apk" 
         variant.mergedFlavor.versionCode = Integer.parseInt(buildTimeSmall()) 
        } 
       } 
      } 
} 

Trả lời

6

Là một workaround trước khi phát hành 3.0, nếu bất cứ ai đang tìm kiếm một giải pháp, bạn có thể sử dụng:

output.setVersionCodeOverride(Integer.parseInt(buildTimeSmall())) 

Nhờ Jerome, tài liệu tham khảo: https://issuetracker.google.com/issues/63785806#comment6

2

Từ migration guide:

Sử dụng Variant API để thao tác kết quả đầu ra biến thể được chia với các plugin mới. Nó vẫn hoạt động cho nhiệm vụ đơn giản, chẳng hạn như thay đổi tên apk trong thời gian xây dựng, như hình dưới đây:

// If you use each() to iterate through the variant objects, 
// you need to start using all(). That's because each() iterates 
// through only the objects that already exist during configuration time— 
// but those object don't exist at configuration time with the new model. 
// However, all() adapts to the new model by picking up object as they are 
// added during execution. 
android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

Tuy nhiên, nhiệm vụ phức tạp hơn liên quan đến việc truy cập outputFile đối tượng không còn hoạt động được. Đó là do các tác vụ cụ thể của biến thể không còn được tạo trong giai đoạn cấu hình. Điều này dẫn đến các plugin không biết tất cả các kết quả đầu ra của nó lên phía trước, nhưng nó cũng có nghĩa là thời gian cấu hình nhanh hơn. Thay vào đó, chúng tôi sẽ giới thiệu các API mới để cung cấp chức năng tương tự.

+0

Tôi đã đọc, nhưng họ đề cập đến những thay đổi trên outputFile, chứ không phải bản thân biến thể. Hay tôi đang thiếu một cái gì đó? –

+1

'Sử dụng API biến thể để thao tác các đầu ra biến thể ...', về cơ bản bạn đang sử dụng API đó trong mã groovy của bạn: 'variant.outputs.all {...}' – azizbekian

+1

Lỗi của tôi, đọc ngay thông qua đó .. Hy vọng họ sẽ thêm hỗ trợ cho một số thuộc tính trong bản phát hành trong tương lai. –

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