9

Tôi đang cố gắng có một đoạn mã phát hiện BuildType, nhưng tôi hơi bị kẹt. Bất cứ khi nào tôi nhập mã vào cho câu lệnh IF, nó cho biếtAndroid Studio: Kiểm tra loại xây dựng tùy chỉnh

Các loại không tương thích. Bắt buộc: Boolean. Tìm thấy: java.lang.String

Khi tôi đã có thể nghĩ rằng nó sẽ phải là một chuỗi nếu có được ToString() ở cuối.

Mã của tôi để phát hiện đó là:

String buildtype = BuildConfig.BUILD_TYPE.toString(); 
if (buildtype = "admin") { 
    //Do some admin stuff here. 
} 

tôi đã thiết lập các BuildType quản trị trong tập tin build.gradle của tôi như thế này:

admin { 
     debuggable true 
     jniDebuggable false 
     renderscriptDebuggable false 
     minifyEnabled false 
     zipAlignEnabled true 
    } 

Any help is appreciated rất nhiều. Cảm ơn

+1

'=' là các nhà điều hành _assignment_, thats tại sao nó cho bạn biết rằng bạn cần một boolean và không phải là một chuỗi, bởi vì bạn đang gán 'buildtype' thành' "admin" ', và không kiểm tra nếu' buildtype' _equals_ '" admin "'. Để kiểm tra sự bình đẳng (tham chiếu), sử dụng '==' thay thế. Và, bạn nên _not_ sử dụng '==' để so sánh chuỗi, mặc dù. Sử dụng 'someString.equals (...)' cho điều đó. – JonasCz

Trả lời

6

Bạn có thể xem tệp BuildConfig của mình. Đây là tệp bạn sẽ nhận được sau khi tạo bản dựng.

Đối với câu hỏi của bạn. Tôi nghĩ bạn nên sử dụng BuildConfig.FLAVOR thay vì BuildConfig.BUILD_TYPE. Và hãy nhớ loại của chúng là String, do đó, không cần phải chuyển đổi thành Chuỗi với .toString()

Cuối cùng, bạn nên sử dụng phương pháp so sánh chuỗi. Vì vậy, code của bạn nên được

if (BuildConfig.FLAVOR.contentEquals("admin")) { 
    //Do some admin stuff here. 
} 
+0

Cảm ơn bạn rất nhiều. Điều này đã trả lời câu hỏi của tôi. – Cowboy433

+0

Câu hỏi nhanh, đây có phải là phát hiện productFlavors hoặc BuildTypes không. Cảm ơn – Cowboy433

+0

Nó phụ thuộc. Hãy xem tệp 'build.gradle' của bạn. Nếu 'admin' nằm trong' buildTypes', nó sẽ được dectected như BuildTypes Nếu 'admin' nằm trong' productFlavors', nó sẽ được coi là Flavours. –

6

Những gì bạn có thể sử dụng trong trường hợp bạn muốn đi cho một kiểu tùy chỉnh xây dựng và không phải là một hương vị sản phẩm là:

if (BuildConfig.BUILD_TYPE.contentEquals("admin")) { 
    // Do things related to the admin build type. 
} 
Các vấn đề liên quan