2014-09-08 2 views
96

android studio에서 서명 된 APK를 컴파일 한 후 생성 된 proguard 매핑 파일은 어디에 있습니까? 그것이 작동하지 않는 경우android studio, proguard 매핑 파일은 어디에 있습니까

는 잘 모르겠어요 아니면 그냥 파일 경로를 잊었하고, 경우에 내 강제 구글/유래 검색은 대답하지 않았다이

그것은 응용 프로그램 모듈의 디렉토리에 build/outputs/proguard/release/mapping.txt에 위치해야
+0

여기에 공식적으로 설명되어 있습니다. https://firebase.google.com/docs/crash/android#uploading_proguard_mapping_files_manually –

+2

@JayakrishnanPM은 3 년 후 Google이이 문제를 해결하게되어 기쁘게 생각합니다. – CQM

답변

132

.

ProGuard 및 Android Studio의 최신 버전에서 파일은 build/outputs/mapping/release/mapping.txt에 있습니다.

나를 위해
+1

새로운 경로는 build/outputs/mapping/release/mapping.txt입니다. –

63

가 '빌드/출력 /지도/해제'

+11

'build/outputs/mapping/release/mapping.txt' – aleb

+1

그 중 하나는 android studio에 적합합니다. 2.3.2 – Subho

+0

app/build/outputs/mapping /release/mapping.txt BC 매핑 파일을 포함하지 않는 별도의 빌드 폴더가 있습니다 ... – NukeouT

24

나는 발생되는되지 않았 음을 발견, 그래서 규칙은 내가 청소기를 발견

-printmapping build/outputs/mapping/release/mapping.txt 
+1

printmapping이 내가 사용하고 있던 proguard 파일 템플릿에 의해 무효화 된 것을 발견했습니다! – Boy

+0

이 기능이 작동하여 모든 proguard 출력 파일이 생성되었습니다. – j2emanue

33

파일에이 추가에있다 mapping.txt 파일을 build/ 디렉토리 트리 외부의 위치에 기록하도록 proguard를 구성하여보다 편리하게 버전 제어를 확인할 수 있습니다.

것은이를 달성하기 위해, 당신의 proguard-rules.pro 파일이 넣어 :이 (대부분) 귀하의 proguard-rules.pro 파일과 같은 디렉토리에 배치됩니다

-printmapping mapping.txt 

. 궁극적으로 APK 파일과 동일한 디렉토리에 동일한 이름 (풍미, 빌드 유형 등을 포함 할 수 있음)으로 작성하려고합니다.

참고 : 경험상 이 아닌은 proguard 템플릿 파일 (여기에서는 설명자가 다른 answer으로 제안 했음)보다 우선합니다.

UPDATE : 여기 https://stackoverflow.com/a/31116608/444761

+1

내 솔루션보다 낫다. 버전 제어하에 배치하면된다. –

+0

왜이 버전을 제어하고 싶습니까? 빌드 종속성에 따라 별도로 출시되는 모든 APK에 대해 필요합니다. 당신은 소스에서 별도의 apk를 업로드/체크인해야하므로 소스 VCS에서 체크 할 필요가 없습니다! – Denny1989

+0

@ Denny1989 무슨 뜻인지 확실하지 않습니다. APK를 빌드하고 버전 컨트롤 외부에 저장합니다. 매핑 파일을 어딘가에 보관해야합니다. * * APK와 함께 저장할 수 있지만 버전 제어에있어 더 깨끗합니다. 그러나 프로젝트 당 하나의 릴리스 APK 만 있으므로 YMMV. –

6

enter image description here

이 사진에 - 당신은 매핑 폴더에 그것을 발견 할 것이다 : : 여러 제품 맛이있는 경우, 다음이 훨씬 더 나은 솔루션입니다

1
을 내가 바보 야, 심지어 길을 잃기 때문에 누군가가 나에게 말할 때

파일은 여기서 내가 버전을 사용하고 있습니다

cd StudioProjects/fooProject 
find . -name "mapping.txt" | xargs less 
8

Android Studio 2.2.2. 릴리스의 \app\build\outputs\mapping\debug\mapping.txt

: 디버그를 들어

: 나를 위해 다음과 같은 위치에 위치하고 \app\build\outputs\mapping\release\mapping.txt

4

그것의이 질문에 대답하지만 단지의 경우 누군가 내 대답을 필요로하는 아주 늦게 .매핑 파일의

위치 deobfuscate합니다 :

ProGuard에서이 응용 프로그램 응용 프로그램/구축/출력 /지도/FLAVOR/릴리스의 파일을 저장/mapping.txt

일반적으로 디버그 모드에서는 매핑 파일이 필요하지 않습니다. 일반적으로 난독 화가 사용되지 않기 때문입니다. 그런 경우가 아니라면 build.gradle 파일에 다음과 같은 디버그 변형 코드가 있는지 확인하십시오.

debug { 
    minifyEnabled false 
    debuggable true 
} 

일부 둘점은 :

mapping.txt 파일은 새 버전을 작성하기 전에 릴리스 ProGuard에서 빌드, 그래서 그 파일의 첫 번째 테이크 백업을 만들 때마다 덮어 쓰기됩니다. 이전 버전의 앱에서 스택 추적을 난독 화하는 데 도움이됩니다. 구글 Play에서 앱 게시 할 때

, 업로드 할 수 있습니다

1. 구글 플레이 콘솔로 mapping.txt 파일 업로드 : 그렇다 코드를 당황하게하는 두 가지 방법이 있다는 것을에서

각 APK 버전의 mapping.txt 파일 그런 다음 Google Play는 사용자가 신고 한 문제로 인해 수신 스택 추적을 해독하여 Google Play Console에서 검토 할 수 있습니다.

2. 지역 SDK 도구 retrace.sh/retrace.bat : 앱의 릴리스 버전을 실행하려는

몇 번 검사를 건너 (해제 변형을 구축 변경하고 실행하여) 프로덕션 환경에서 발생하지 않도록 오류를 수정하십시오 (재생 저장소에 출시 될 때).

난독 화 스택 추적을 사용자가 직접 읽을 수있는 것으로 변환하려면 리 트레이스 스크립트 (Windows에서는 retrace.bat, Mac/Linux에서는 retrace.sh)를 사용하십시오.

<sdk-root>/tools/proguard/bin/ 디렉토리에 있습니다.

<sdk-root>은 모든 안드로이드 라이브러리와 SDK가 설치된 장소입니다.

스크립트는 mapping.txt 파일과 스택 추적을 사용하여 읽을 수있는 새 스택 추적을 생성합니다.

명령 구문 : 예를 들어

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>] 

는 :

retrace.bat -verbose mapping.txt obfuscated_trace.txt 

나는 생산 오류를 사전에 확인하는 것은 매우 편리으로 난독의 로컬 버전을 선호합니다.

도움이되기를 바랍니다.

관련 문제