2014-05-16 3 views
5

프로 가드로 제작 된 Android 앱에서 Google 애널리틱스 v4 API를 사용하고 있습니다. 결과 충돌 보고서가 이상합니다. 예를 들어,`NullPointerException (@a : t : -1) {main} '애널리틱스 v4 캐치 예외 및 프로 가드

1) 추측하지 않고 제공된 정보로이 충돌의 정확한 위치를 찾을 수 있습니까?

2) 어떻게 충돌 보고서의 가독성을 향상시킬 수 있습니까? documentation은 맞춤 예외보고자를 설정하는 방법을 보여줍니다. 그러나 또한 상태 :

예외 메시지 (e.getMessage())는 개인 식별 정보가 포함될 수 있으므로 Google 애널리틱스로 보내지 마십시오.

그렇다면 메시지가 아니라면 proguard가있는 앱에서 충돌 위치를 찾을 수있는 오류 보고서를 생성하는 데 사용할 수있는 예외 필드는 무엇입니까?

답변

1

해결책은 StandardExceptionParser을 재정의하여 근본 원인의 패키지 이름을보고하는 것입니다. 자세한 설명은 my blog post을 참조하십시오.

+0

주어진 URL이 더 이상 작동하지 않으므로 여기에 몇 가지 코드 스 니펫을 제공하는 것이 좋습니다. – Chitrang

+2

"내 블로그 게시물보기", 지금은 제외됩니다. 매우 유용한 대답입니다. -1. – Malcolm

+1

@Malcolm 귀하의 블로그가 아직 다운되었습니다. 여기에 솔루션을 복사하십시오. –

1

몇 가지 :

  1. Proguard와 그것이 당신이 할 모든 컴파일 한 ranames의지도를 생성합니다. 그 파일을 어딘가에 저장했다면 스택을 직접 매핑 할 수 있습니다.
  2. 로컬 컴퓨터에서 응용 프로그램을 디버깅하는 경우에는 proguard를 해제하십시오.
  3. 개인적으로 식별 할 수있는 정보를 Google에 보내면 안된다는 것이 가장 큰 문제입니다. 어떻게 든 스택 추적의 상위 2 또는 3 클래스를 구문 분석 할 수 있다면 일이 제대로되지 않을까요?

자세한 질문이 있으시면 언제든지 문의하십시오.

+1

답장을 보내 주셔서 감사합니다. 1.에 대해서는 proguard가 mapping.txt 파일을 생성하지만, 예를 들어,'@a : t : -1'은 패키지 이름이 없으므로 정확한 매핑을 찾기에 충분한 정보를주지 못합니다 'a'의 'a'라는 이름의 클래스가 여러 개있을 것입니다. 따라서 예외 형식을 변경하는 것이 중요합니다. 2.에 대해서는 Google 애널리틱스에서 생성 한 오류 보고서가 Play 스토어의 출시 빌드에 포함되어 있습니다. 그리고 나는 3에 동의합니다. –

+0

안녕하세요, 왜 구글이 '개인 식별 정보를 Google에 보내지 말아야하는지'에 대해 언급 해주십시오. GA는 앱 소유자 만 볼 수 있으므로이 정보는 실제로 어떤 정보입니까? –

5

@aleph_null 외에도 줄 번호를 유지하기 위해 proguard 구성 파일에이 두 줄을 추가해야합니다. 그렇지 않으면 항상 예외 메시지에 -1이 표시됩니다.

-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable