서명 된 APK를 생성하는 동안 "항목 이름 'res / layout / test_toolbar.xml'충돌"오류가 표시됨


17

오늘 안드로이드 스튜디오를 3.5.x 에서 3.6으로 업데이트 하고 다음 메시지를 보여주는 빌드 변형에 대한 서명 된 apk를 생성하는 동안 오류가 발생했습니다- 항목 이름 'res / layout / test_toolbar.xml'이 충돌했습니다. 전체 프로젝트에서 하나. " stage " 라는 사용자 지정 빌드 변형이 있으며 서명 된 apk를 만들려고 할 때마다 항상 실패합니다. 아직 해결책을 찾지 못했습니다. 이 문제를 도와주세요. 감사

업데이트 : 다음과 같은 메시지에서도 동일한 문제가 발생할 수 있습니다 ( AS-3.6.1 에서 찾았습니다 ). 따라서 알 수없고 해결할 수없는 이러한 종류의 메시지에 대해 걱정하지 마십시오. 지금까지 서명 된 apk를 생성하는 동안 두 가지 새로운 유형의 메시지를 발견했습니다.

  • Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
  • Access Denied

해결책은 같습니다. 때로는이를 Invalidate Cache and Restart위해 AS에 필요할 수도 있습니다 . 당신의 결과를 알려주세요. 감사

답변:


16

아래의 솔루션을 읽기 전에 2020년 1월 4일에서 내 업데이 트를 읽어 보시기 바랍니다, 문제는 더 깊은이며에 당신의 코드입니다.

이 3.6 업데이트 후에도 같은 문제가 있습니다.

* 빠른 해결책은 : *

  1. projectFolder \ build 삭제
  2. projectFolder \ debug * 삭제
  3. projectFolder \ release * 삭제
  4. projectFolder \ app \ build 삭제
  5. projectFolder \ app \ build \ debug * 삭제
  6. projectFolder \ app \ build \ release * 삭제

따라서 모든 빌드, 디버그 및 릴리스 디렉토리를 삭제해야합니다.

전체 디버그 및 릴리스 디렉토리 를 삭제하지 못할 수도 있지만 모든 내용을 삭제할 수 있습니다.

UPD :

나는 그들이 오늘이 버그를 수정했다고 생각합니다. 여기에 이미지 설명을 입력하십시오

UPD 03.03.2020 : 불행히도, 버그가 수정되지 않았습니다.

UPD 01.04.2020 : (4 월 1 일 농담이 아님 :)

지난 달부터 Android Studio 개발자와 함께 일했으며 오늘 로그의 심각한 오류 중 하나가 jre를 사용하는 대신 jre를 사용하는 대신 jdk를 사용하라는 지시를 받았습니다.

jre 대신 jdk ( File-> Project Structure-> SDK Location-> JDK Location )를 설정 한 후 "build output"에 표시되지 않은 다른 오류가 발생하여 Analyze- > Inspect Code를 실행 하고 EIGHTEEN 오류가 발생했습니다. 레이아웃에서 잘못된보기 ID 참조, 방향 오류 (hi to tools:ignore="MissingDefaultResource") 및 매니페스트 방향 오류 : 방향이있는 가로 또는 세로에 대한 3.6.1의 새로운 업데이트 인 screenOrientationStudio에서 다음과 같이 빠르게 수정했습니다. <activity tools:ignore="LockedOrientationActivity" />

Analyze-> Inspect Code로 모든 오류가 수정되면 jdk 및 jre (테스트 용)를 사용하여 서명 된 APK를 성공적으로 생성했습니다.

요약하면이 버그는 Inspect Code도구 로만 찾을 수있는 심각한 오류로 인해 발생했습니다 .

나는 AS가 이것이 버그라고 생각하지 않을 것이라고 생각한다. 이것이 그들이 코드를 향상시키는 새로운 기능이라고 말했다. 또한 jre 대신 jdk를 설정하지 않아도 코드를 검사해야한다고 생각합니다.

AS 지원의 추가 권장 사항 :

release빌드를 내보낼 때 BTW lintVital는 추가 검사를 수행하고으로 표시되는 일부 오류를 실행 fatal합니다. 이 검사는 비싸므로 debug빌드 에서 발생하지 않습니다.


1
고마워 나는 이미 그것을 해결했다. 이 버전이 안정적인 버전입니까?
Saadat

1
@Saadat 아니오, 지금 확인했습니다-버그가 여전히 있습니다.
danyapd

정말 고맙습니다. 수정을 기대하면서 다시 업데이트하려고했습니다. @danyapd
Saadat

나도 삭제해야한다는 것을 알았 projectFolder\app\[all flavor folders]습니다.
drmrbrewer

1
감사합니다 Build > Rebuild Project.Android Studio 3.6.2에서 수정되었습니다.
gregn3

7

apk를 생성하는 동안 디버그 폴더에서 output.json 및 app-debug.apk를 삭제하는 대상 폴더를 확인하십시오. 이 후에 동일하게 구축하십시오. AFAIK, 그것은 안드로이드 스튜디오의 버그입니다, 그들이 곧 고칠 수 있기를 바랍니다 :)


1
답변 주셔서 감사합니다. 나는 이미 똑같이하고 내 문제를 해결했다. :)
Saadat

1
고마워요 !! 2.5 시간의 투쟁 후이를 발견했습니다
Kishita Variya

이것에 감사합니다, 매력처럼 일했습니다
Brian

4

APK 파일을 포함하여 빌드 변형의 이전 빌드 출력을 삭제했습니다. 그게 나를 도와 줬어


1
build디렉토리 전체를 삭제하려고 시도했지만 여전히 동일한 문제가 발생했습니다. 당신이 한 일을 정교하게 설명 할 수 있습니까?
Pusparaj

프로젝트의 루트 및 app / build 디렉토리에서도 빌드 디렉토리를 삭제합니까? 내 프로젝트에서 apk의 출력 경로가 변경되고 단순히 이전 apk 파일이 있던 위치를 삭제합니다.
블라디슬라프 Vatrushkin

1

자동 viewBinding, Kotlin을 사용한 바인딩 또는 3.6의 viewBinding 기능을 사용할 때 발생합니다.

요소가 동일한 ID를 공유하는 파일을 추가하는 경우 ViewBinding이 혼동되어 이러한 오류가 발생합니다.

View Type으로 구분되는 두 개의 레이아웃 파일이있는 Adapter 클래스의 예를 들어 보도록하겠습니다.

import kotlinx.android.synthetic.main.frag_subscription_recommend.view.*


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
   return ViewHolder(
        LayoutInflater.from(parent.context).inflate(
            if (viewType == 1) {
                R.layout.frag_subscription_recommend
            } else
                R.layout.frag_subscription_common,
            parent,
            false
        )
    )
}

onBinding(){
  holder.itemView.id_button_submit.setOnClickListener {}
}

// 어떤 리소스 나 레이아웃이 혼란스러운 경우 bcoz 요구 사항이 모두 동일한 버튼 ID를 갖습니다. 당신이 사용해야하는 경우 :

 onBinding(){
  holder.itemView.findViewById<Button>(R.id.id_button_submit).setOnClickListener {}
}

이전 구현을 가능하게합니다.

이것이 당신 편에서 작동하는지 알려주세요?


1
죄송하지만 빌드, 디버그 및 릴리스 디렉토리에 문제가있었습니다. 출력 JSON 파일을 포함합니다. 어쨌든 답장을 보내 주셔서 감사합니다
Saadat

1

안드로이드 스튜디오를 업데이트 한 후에도 같은 오류가 발생했고 프로젝트를 정리하여 문제를 해결했습니다 (빌드> 프로젝트 정리! :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.