[java] 장치에서 디버깅 할 때 ‘소스 코드가 바이트 코드와 일치하지 않습니다’

API 레벨 21에 대해 컴파일중인 앱이 있습니다.
여기에 이미지 설명 입력

그런 다음 API 레벨 23을 사용하여 실제 기기에서 디버그합니다.

여기에 이미지 설명 입력

문제는 Android OS의 자체 클래스를 통해 디버깅을 시도 할 때 ‘소스 코드가 바이트 코드와 일치하지 않습니다’라는 메시지가 표시된다는 것입니다. 왜 이런 일이 발생합니까? 앱이 실행되는 테스트 장치는 API 레벨 23이고 디버깅중인 소스 파일도 레벨 23입니다.
* 여기에 이미지 설명 입력 *

정말 혼란 스럽습니다. 누구든지이 메시지가 표시되는 이유와 해결 방법을 설명 할 수 있습니까?



답변

Google의 IssueTracker에 미해결 문제 가 있습니다 .

이 문제에 제공된 잠재적 솔루션 (이 게시물 날짜 기준)은 다음과 같습니다.

  • 빌드-> 정리를 클릭하십시오.
  • 설정-> 빌드, 실행, 배포에서 Instant Run 비활성화


답변

내 해결책은 다음과 같습니다.

둘 이상의 라이브러리 버전이있는 경우 도움이 될 수 있습니다.

  1. lib 소스 코드에 중단 점 설정
  2. 중단 점까지 코드 실행
  3. 이 팁을 얻을 수 있습니다

여기에 이미지 설명 입력

  1. 화살표 아이콘을 클릭

  2. 당신은 이것을 얻을 것이다

    여기에 이미지 설명 입력

  3. 두 번 클릭하여 올바른 lib를 선택합니다 (일반적으로 lib의 가장 높은 버전이 정확함).

실수로 “비활성화”버튼을 클릭했습니다. 디버거 설정에서 활성화 할 수 있습니다.

여기에 이미지 설명 입력

3 단계의 팁이없는 경우 설정 옵션을 확인했는지 여부를 확인할 수 있습니다.


답변

compileSdkVersion과 동일한 API 수준의 Android 에뮬레이터를 사용해야합니다. 귀하의 경우에는 API 레벨 21로 Android 에뮬레이터를 사용해야합니다.


답변

Gradle을 사용하는 경우 Gradle 캐시에 문제가있을 수 있습니다. ( 참조 ). 아아, 달리더라도

gradle --refresh-dependencies

, 실제로 모든 종속성을 새로 고치는 것은 아닙니다. 일부 쓰레기가 남아 있습니다. ( 참조 ).

따라서 가장 확실한 (하지만 과감하고 긴) 변형은 [user] /. gradle / caches에서 내부를 모두 지우는 것입니다. 또는 문제 프로젝트를 찾아서 캐시 만 지우십시오.


답변

나는 여기에 주어진 모든 해결책을 시도했지만 그들 중 누구도 나를 위해 일하지 않았습니다. 버전 2019.1.3에서는 아티팩트를 정리하고 다시 빌드하면 작동했습니다. 먼저 Build -> Build Artifacts... -> <select your artifact> -> Clean클릭 Build하거나 Rebuild같은 위치에서.


답변

이것은 나를 위해 일한 단계입니다 (Mac 및 Windows 모두) :

  1. “파일”을 클릭하십시오
  2. “캐시 무효화 / 재시작 …”을 클릭하십시오.
  3. 선택 : “무효화 및 다시 시작”
  4. 20 분간 기다립니다


답변

프로젝트 설정> 아티팩트로 이동하십시오. 문제가있는 이슈를 선택하십시오. “프로젝트 빌드에 포함”옵션이 있습니다. 이것은 체크 (활성화)되어야합니다. IntelliJ 이전 버전의 경우이 옵션은 “Make on build”입니다.