그런 다음 API 레벨 23을 사용하여 실제 기기에서 디버그합니다.
문제는 Android OS의 자체 클래스를 통해 디버깅을 시도 할 때 '소스 코드가 바이트 코드와 일치하지 않습니다'라는 메시지가 표시된다는 것입니다. 왜 이런 일이 발생합니까? 앱이 실행되는 테스트 장치는 API 레벨 23이고 디버깅중인 소스 파일도 레벨 23입니다.
정말 혼란 스럽습니다. 누구든지이 메시지가 표시되는 이유와 해결 방법을 설명 할 수 있습니까?
답변:
Google의 IssueTracker에 미해결 문제 가 있습니다 .
이 문제에 제공된 잠재적 솔루션 (이 게시물 날짜 기준)은 다음과 같습니다.
compileSdkVersion과 동일한 API 수준의 Android 에뮬레이터를 사용해야합니다. 귀하의 경우에는 API 레벨 21로 Android 에뮬레이터를 사용해야합니다.
이것은 나를 위해 일한 단계입니다 (Mac 및 Windows 모두) :
아마도이 오류 메시지에는 하나 이상의 원인이있을 수 있습니다. 제 경우는 OP의 경우와 같지 않았습니다. 제 경우에는 추가 라이브러리가 필요한 타사 라이브러리 때문이었습니다.
예를 들어, 수동으로 X.jar을 LIB에 추가하지만이 X.jar이 작동하려면 Z.jar이 필요합니다.
메시지가 전혀 도움이되지 않았 음을 알아내는 데 시간이 걸렸습니다. 충돌하는 클래스에 도달 할 때까지 앱을 디버깅해야했고 해당 클래스에서 모든 가져 오기가 만족되었는지 확인해야했습니다.
(Particualry : commons-httpclient.jar이 필요한 MercadoLibre-0.3.4.jar을 추가했습니다.)
도움이 되었기를 바랍니다!
ProGuard를 활성화 한 경우에도 발생할 수 있습니다. buildTypes에서 minifyEnabled false, shrinkResources false, useProguard false를 설정합니다.
AVD를 생성하고 tagetApi와 동일한 API 레벨을 선택하고 compileApi를 선택할 수 있습니다.
그래서 저는 많은 사람들을 괴롭 히고 위의 수정이 작동하지 않는이 문제를 해결하는 데 도움이 될 수 있도록 계정을 만들었습니다.
이 오류가 발생하고 여기에 도움이되지 않는 경우. 프로그램이 오류를지나 끝날 때까지 "프로그램 재생 다시 시작 버튼"을 클릭 해보십시오. 그런 다음 디버그 옆의 콘솔 탭을 클릭하고 빨간색 텍스트를 읽으십시오.
내 문제가 null 배열에 값을 삽입하려고했지만 소스 코드 오류가 발생했습니다. 1 단계 재개 버튼 클릭
Resume program play button
여기에 빨간색 상자 / 화살표가있는 화면 캡처 가 유용 할 수 있습니다.
나는 같은 문제가 있었고 해결책을 찾았습니다. 빨간색으로 표시된 라인이 있으면이 오류가 발생하지만 모든 라인의 플래그를 해제하면 정상적으로 작동합니다.
플래그가있는 것은 줄 번호가있는 왼쪽을 클릭하면 해당 줄이 강조 표시됨을 의미합니다. 그것이 명확하지 않다면 여기에 그림이 있습니다.
go from :
flagged line
to :
not flagged 라인