2010-12-15 4 views
11

플랫폼 개발을 계속하기 위해 StrictMode의 오픈 소스를 기다리고 있습니다. Android blog entry의 샘플은 StrictMode는 SDK 개발을위한StrictMode에 대한 DEVELOPER_MODE의 정의

if (DEVELOPER_MODE) { 
    ... 
} 

통화를 둘러싼 제안,이 상수가 로컬로 각 응용 프로그램에 의해 정의 될 기대. 그러나 플랫폼을 개발할 때 android.util.Config.DEBUG이 설정 여부를 결정하는 가장 좋은 방법은 무엇입니까?

+1

나는 그것이 임의의 이름으로 정의 된 부울이라고 생각했습니다. – schwiz

답변

16

죄송합니다, DEVELOPER_MODE는 블로그 게시물과 Javadoc에 대해 선택한 임의의 이름이었습니다. 아마 내가 문서에서 더 명확하게해야합니다.

내가 상상 사람들이 만들 것 거라고 자신의 하드 코딩, Config.DEBUG 사용할 수있는 더 좋은 일이었을 것처럼 그들이 손으로 유지하지만, 보이는 것을

private static final boolean DEVELOPER_MODE = false;

.... 나는 그것에 대해서조차 몰랐다! :)

+0

OpenSource Gingerbread 코드에서 StrictMode를 사용하는 핵심 Android 앱이 없음을 알았습니다. 나는 그들이 우리 자신의 플랫폼 개발이 StrictMode를 사용하는 방법을 모델링하기 위해 그것을 어떻게 사용하고 있었는지보고 싶어했다. 안드로이드 플랫폼 개발팀이 개발주기 동안 StrictMode를 활성화/비활성화하는 방법에 대한 통찰력을 제공 할 수 있습니까? –

+0

Dave, StrictMode를 사용하고 있기 때문입니다. 우리는 모든 시스템 응용 프로그램을 켜기로했습니다. –

+0

아, 단 한 줄의 주석 (너무 일찍 입력). http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/app/ActivityThread.java;h=78df78009ab9735393672a81a9b2960245cfc980;hb=refs/을 참조하십시오. head/master와 public이지만 숨겨진 API 인 "conditionallyEnableDebugLogging"을 검색하십시오. –

4

Config.DEBUG은 거의 항상 false로 설정되어 있기 때문에 실제로 작동하지 않습니다. AndroidManifest 파일에서 debuggable 속성을 살펴 보는 것이 좋습니다. 나는 그것을 블로그 포스트에 문서화했다. Links are with this answer

1

내 질문에 답변 ... 플랫폼 개발자 (Android를 사용하여 장치를 만드는 개발자)로서 Android의 작업 관리자는 시스템 파티션에 설치된 모든 응용 프로그램의 주 스레드에서 StrictMode를 자동으로 활성화합니다. 플랫폼은 eng 또는 userdebug로 빌드됩니다. Manfred는 Config.DEBUG가 SDK 개발자에게 적합하지 않다는 것에 동의합니다. 기본적으로 시스템 파티션에 기본적으로로드되는 응용 프로그램을 작성하는 플랫폼 개발자는 StrictMode를 활용하기 위해 아무 것도 할 필요가 없습니다. 플랫폼이 StrictMode를 활용합니다.

+0

앱 개발자 (플랫폼 개발자가 아님)로서 정확히 무엇을 가지고 있는지 알 수 없습니다. 숨겨진'conditionallyEnableDebugLogging'을 사용해야합니까? AndroidManifest 파일을 확인 하시겠습니까? 또는...? 고마워 – superjos

0

이전 질문이지만 가장 가까운 대안은 어플리케이션 엔지니어에게 BuildConfig.DEBUG입니다. 이것이 디버그 빌드인지 여부를 반환합니다.