2012-01-30 4 views
1

APK를 개발 중입니다. 디버깅을 목적으로 다양한 옵션을 설정 및 해제 할 수 있기를 원합니다. 예를 들어 :APK에서 디버그 기능을 동적으로 활성화/비활성화하는 방법

  • 는 현재
  • ...

로그 캣 매우 자세한 출력을 활성화 몇 가지 실험 기능을 사용 시간 프로필 추적

  • 를 사용, 우리는를 작성하여이 작업을 수행 할 각 기능에 대한 코드에서 플래그를 지정하고 설정/해제합니다. 그러나 :

    • 때문에, 다시 업로드하고 APK
    • 를 다시 시작해야 할 필요성의 시간이 소요 상태
    • 는이 APK의 재 구축이 필요합니다 사람들이 실수로 디버그 모드에서 물건을 확인하는 위험이 실행됩니다 - - 고객에게 디버깅 기능을 사용하도록 요청하고 결과를보고 할 수는 없습니다.

    Android 개발자가 이러한 유형의 문제를 해결하는 패턴이 있습니까?

    과거에는 이러한 목적으로 환경 변수를 사용했습니다.

  • 답변

    0

    난 당신이 사용자에게 노출하는 방법을 많은이 기능에 따라 두 가지 방법 중 하나를 그 일을 생각 하는데요 : SharedPreference 값 오프

    • 키 디버그 기능, 그리고 그들을 노출 UI의 환경 설정/디버그 메뉴.

    • &에 파일을 전자 메일로 보낼 수있는 외부 저장소의 파일의 존재/내용을 사용하여 디버그 기능을 사용하도록 최종 사용자에게 배치 할 위치를 지시합니다.

    옵션 2는 환경 변수를 사용하는 것보다별로 다르지 않습니다.

    1

    apk에서 디버깅 권한 SET_DEBUG_APP을 사용할 수 있습니다.

    class MYLog { 
    i(String Tag, String msg) { 
        if(LOG_ENABLED){ 
        Log.i(TAG, msg); 
    } 
    

    이라는 클래스를 새로 만듭니다. Log.i() 대신 MyLog.i를 호출 할 수 있습니다. 로깅을 활성화/비활성화하려면 서버에서 LOG_ENABLED 값을 가져올 수 있습니다.

    +0

    그런 다음 APK를 다시 작성, 업로드 및 다시 시작하지 않고 디버깅 출력을 비활성화 할 수 있습니까? – user48956

    +0

    예, 서버에서 비활성화 할 수 있습니다. 다른 apk 파일을 만들 필요가 없습니다. 앱이 시작될 때마다 서버에서 LOG_ENABLED 플래그를 가져 와서 로그 사용 여부를 결정합니다. 앱에서 로그를 읽고 서버에 전송할 수있는 권한이 필요합니다. – dcanh121

    관련 문제