2011-08-11 44 views
36

Tôi phải xác định tại một số vị trí trong ứng dụng của mình, cho dù ứng dụng của tôi đang chạy ở chế độ gỡ lỗi hay chế độ trực tiếp. Có chức năng hay đoạn mã nào để kiểm tra điều đó không. trả về true/false trong cả hai trường hợp on/off. nếu có, hãy giúp tôi. Cảm ơn trước.Cách kiểm tra theo chương trình xem ứng dụng có đang chạy ở chế độ gỡ lỗi hay không?

+1

http://stackoverflow.com/questions/4276857/getting-debuggable-value-of-androidmanifest-from-code – Im0rtality

+0

@Imortality ... thanks để hợp tác nhưng nó không hoạt động trong trường hợp của tôi. –

+0

Chính xác chế độ gỡ lỗi và chế độ trực tiếp là gì? – Im0rtality

Trả lời

34

Câu trả lời rằng @ Im0rtality cung cấp là chính xác nhất:

boolean isDebuggable = (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE)); 

(từ this Google blog post)

(CẬP NHẬT: có lẽ là &= nên chỉ & trong biểu thức trên, mặc dù &= là những gì Google có trong bài đăng trên blog của họ)

thanks fo r hợp tác nhưng nó không hoạt động trong trường hợp của tôi

Tôi rất tiếc khi biết điều đó. Tất nhiên, kể từ khi giải thích những gì "không làm việc trong trường hợp của tôi" là một cái gì đó bạn bầu để bỏ qua, tôi không thể giúp bạn thêm.

+0

Bạn có lỗi đánh máy: "getApplicationInfo()" không phải "getApplcationInfo()" – christoff

+0

@christoff: Đã sửa lỗi! – CommonsWare

+1

Tại sao bạn có '& =' ở đó? Không phải nó chỉ là '& '? –

25

Nó không phải là rõ ràng từ câu hỏi liệu chế độ gỡ lỗi đề cập đến:

  1. Cho dù ứng dụng là có thể gỡ lỗi hoặc không
  2. Cho dù ứng dụng hiện đang được sửa lỗi (ví dụ qua ADB)

Đầu tiên được bao phủ bởi CommonsWare's answer:

boolean isDebuggable = 0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE); 

Thứ hai là:

boolean isBeingDebugged = android.os.Debug.isDebuggerConnected() 

https://developer.android.com/reference/android/os/Debug.html#isDebuggerConnected()

12

Trong trường hợp của "chế độ sống" bạn có nghĩa là ký để sử dụng trên các cửa hàng chơi, bạn có thể phân biệt giữa 2 quốc gia bằng cách kiểm tra giá trị của BuildConfig.DEBUG. Google đã hiển thị video về nó here

13
if (BuildConfig.DEBUG) { 
    // here be thine debug statement 
} 

Hoạt động thực sự tốt trên nhật thực và Android Studio.

Những người khác được đề cập ở đây thường ném ngoại lệ thời gian chạy cho tôi

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