2011-08-11 9 views
36

내 애플 리케이션에 어떤 장소에서 식별 할 수있는 것을, 내 응용 프로그램이 디버그 모드 또는 라이브 모드에서 실행되고 있는지 여부. 그것을 확인하는 데 사용할 수있는 기능이나 코드가 있습니까? 두 경우 모두에서 true/false를 반환합니다. 그렇다면 제발 도와주세요. 미리 감사드립니다.앱이 디버그 모드로 실행되고 있는지 여부를 프로그래밍 방식으로 확인하는 방법은 무엇입니까?

+1

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

+0

@Imortality ... 감사에 대한 런타임 예외를 throw 협력을 위해서이지만 내 경우에는 작동하지 않습니다. –

+0

정확히 디버그 모드와 라이브 모드는 무엇입니까? – Im0rtality

답변

34

@ Im0rtality가 제공하는 대답은 올바른 하나입니다

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

((this Google blog post에서) UPDATE는 : &=는하지만 아마도 &=은, 위의 표현에 불과 &해야한다 무엇 구글은

감사 FO) 자신의 블로그 게시물에있다 r 협력하지만 내 경우에는 작동하지 않습니다

정말 유감입니다. 물론, "내 경우에 효과가 없다"는 것이 당신이 건너 뛰기로 선택한 것을 설명하고 나면, 당신을 더 도울 수 없습니다.

+0

당신은 오타가 "getApplicationInfo()"없습니다 "getApplcationInfo()" – christoff

+0

@christoff을 : 고정, 감사합니다! – CommonsWare

+1

왜 거기에 '& ='가 있습니까? 단지'&'가되어서는 안됩니까? –

25

그것은 디버그 모드가 참조 여부를 질문에서 명확하지 않다에 : 앱이 현재 (예 : ADB 이상) 디버깅중인 여부는 응용 프로그램이 디버깅 여부

  1. 여부
  2. CommonsWare's answer가 적용된다

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

    두 번째는 다음과 같습니다

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

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

12

가 "라이브 모드"에 의한 경우는 Play 스토어에서 사용하기 위해 서명 의미, 당신은 BuildConfig.DEBUG의 값을 확인하여이 개 상태를 구별 할 수 있습니다. 구글은 그것을 here

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

작품에 대한 비디오 정말 잘에서 일식과 안드로이드 Studio를 보여 주었다.

여기에 언급 된 다른 사람들은 종종 나를

관련 문제