빨간 테두리는 릴리즈용이 아니라 디버깅용일 때 자동으로 켜져 있다.
검색 결과 세팅에 나오는 Strict mode는 꺼져 있어도 빌드 시 eng(engineer) 모드로 빌드 하니 자동으로 켜졌다.
https://groups.google.com/forum/#!topic/android-x86/xhUxzF4kTjU 쓰레드를 보면 여러 말들이 많은데,
build.prop 에서 ro.build.type 값을 eng에서 user나 user-debug로 바꿔라,
prop 값을 세팅해라 persist.sys.strictmode.visual=
등등.. 실제로 젤리빈 소스를 뒤져보니
frameworks/base/core/java/android/os/StrictMode.java 에서 위의 strictmode prop 값들은
0,1 이 아니라 true false로 비교하고 있었고(특정 타겟 보드라 다를 수도 있음)
과부하? 등이 걸릴 때 빨간 테두리가 나온다는데 '얼마나' 보다는 '무엇을' 하는지가 더 중요하지 않나 싶어 빨간 테두리를 아예 뺌.
frameworks/base/core/java/android/os/StrictMode.java 소스에 있는 conditionallyEnableDebugLogging() 메서드 안에서
빨간 줄만 안나오게 고쳐보자.
+는 추가된 줄 -는 뺀 줄이고 한글 주석은 취향 (git unified view 로그 그냥 올림.. ㅋㅋ)
// remove red border flashing
public static boolean conditionallyEnableDebugLogging() {
boolean doFlashes = SystemProperties.getBoolean(VISUAL_PROPERTY, false)
&& !amTheSystemServerProcess();
// 아래 false 기본 값을 true로 바꾸자. 위의 VISUAL_PROPERTY는 ICECREAM 미만, DISABLE_PROPERTY는 ICEREAM 이상)
// 둘의 값은 의미상으로 보아도 반대여야 한가지 옵션으로서 기본 값이 맞아진다.(visual-보이기, disable-안보이기 이므로)
- final boolean suppress = SystemProperties.getBoolean(DISABLE_PROPERTY, false);
+ final boolean suppress = SystemProperties.getBoolean(DISABLE_PROPERTY, true); // default false -> true (disable)
// For debug builds, log event loop stalls to dropbox for analysis.
// Similar logic also appears in ActivityThread.java for system apps.
@@ -944,7 +945,8 @@ public final class StrictMode {
threadPolicyMask |= StrictMode.PENALTY_DROPBOX;
}
if (doFlashes) {
// threadPolicyMask 옵션에서 PENALTY_FLASH 옵션을 빼버렸다.
- threadPolicyMask |= StrictMode.PENALTY_FLASH;
+// threadPolicyMask |= StrictMode.PENALTY_FLASH;
+ threadPolicyMask &= ~StrictMode.PENALTY_FLASH;
}
StrictMode.setThreadPolicyMask(threadPolicyMask);
'Android' 카테고리의 다른 글
현재 파티션 정보 보기 (0) | 2016.05.18 |
---|---|
app 재실행 하기 (0) | 2013.10.24 |
Ethernet 사용을 위한 Kernel 설정 (0) | 2013.08.07 |
Android 빌드 시스템 (Make file 관련) (0) | 2013.08.05 |
System app 구분 (0) | 2013.08.05 |