Tôi đang làm việc trên một ứng dụng Android với Gradle làm hệ thống xây dựng của nó.Cách xác định và sử dụng hằng số trong tập lệnh tạo Gradle (Android)?
Mục tiêu của tôi là sử dụng một giá trị (tên gói) như là một applicationId
:
productFlavors {
orange {
applicationId "com.fruits.android.orange"
// ...
Nhưng cũng để lộ nó thông qua BuildConfig
để mã Java có quyền truy cập vào nó.
Quyền truy cập này phải từ bên ngoài hương vị (cụ thể là phiên bản miễn phí của ứng dụng cần biết tên gói của phiên bản trả tiền để có thể nhắc người dùng nâng cấp trong cửa hàng Play).
Vì vậy, tôi muốn làm một cái gì đó như thế:
productFlavors {
orange {
applicationId orangeProPackage
// ...
buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" // ?
Chỉ Tôi không chắc chắn làm thế nào để xác định orangeProPackage
để nó có thể nhìn thấy trong toàn bộ build.gradle và không phá vỡ kịch bản.
Kể từ khi có một vài hương vị khác nhau, nó sẽ là tốt nhất nếu tôi có thể bằng cách nào đó nhóm tất cả các hằng số như vậy (tôi đoán?):
def proPackages = [
orange: "..."
apple: "..."
banana: "..."
]
và sau đó giới thiệu cho họ một cách sạch sẽ và mô tả như proPackages.orange
v.v.
Câu hỏi đặt ra là, cách thực hiện điều đó?
Đây không phải là bản sao của Is it possible to declare a variable in Gradle usable in Java?
I have seen that câu hỏi (và một vài người khác). Tôi biết cách khai báo buildConfigFields, tôi đã có rất nhiều thứ. Câu hỏi của tôi là về việc sử dụng lại giá trị giống như buildConfigField
vàapplicationId
.
Bản sao có thể có của [Có thể khai báo biến trong Gradle có thể sử dụng được trong Java không?] (Http://stackoverflow.com/questions/17197636/is-it-possible-to-declare-a-variable-in- gradle-usable-in-java) – ThomasThiebaud
@Maloubobola nó không phải là một bản sao.Tôi đã nhìn thấy câu hỏi đó (và một vài câu hỏi khác). Tôi biết cách khai báo buildConfigFields, tôi đã có rất nhiều thứ. Câu hỏi của tôi là về * tái sử dụng * cùng giá trị với 'buildConfigField' * và *' applicationId'. –