오늘 안드로이드 스튜디오를 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에 필요할 수도 있습니다 . 당신의 결과를 알려주세요. 감사
답변
아래의 솔루션을 읽기 전에 2020년 1월 4일에서 내 업데이 트를 읽어 보시기 바랍니다, 문제는 더 깊은이며에 당신의 코드입니다.
이 3.6 업데이트 후에도 같은 문제가 있습니다.
* 빠른 해결책은 : *
- projectFolder \ build 삭제
- projectFolder \ debug * 삭제
- projectFolder \ release * 삭제
- projectFolder \ app \ build 삭제
- projectFolder \ app \ build \ debug * 삭제
- 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의 새로운 업데이트 인 screenOrientation
Studio에서 다음과 같이 빠르게 수정했습니다.
<activity
tools:ignore="LockedOrientationActivity" />
Analyze-> Inspect Code로 모든 오류가 수정되면 jdk 및 jre (테스트 용)를 사용하여 서명 된 APK를 성공적으로 생성했습니다.
요약하면이 버그는 Inspect Code
도구 로만 찾을 수있는 심각한 오류로 인해 발생했습니다 .
나는 AS가 이것이 버그라고 생각하지 않을 것이라고 생각한다. 이것이 그들이 코드를 향상시키는 새로운 기능이라고 말했다. 또한 jre 대신 jdk를 설정하지 않아도 코드를 검사해야한다고 생각합니다.
AS 지원의 추가 권장 사항 :
release
빌드를 내보낼 때 BTW lintVital
는 추가 검사를 수행하고으로 표시되는 일부 오류를 실행 fatal
합니다. 이 검사는 비싸므로 debug
빌드 에서 발생하지 않습니다.
답변
apk를 생성하는 동안 디버그 폴더에서 output.json 및 app-debug.apk를 삭제하는 대상 폴더를 확인하십시오. 이 후에 동일하게 구축하십시오. AFAIK, 그것은 안드로이드 스튜디오의 버그입니다, 그들이 곧 고칠 수 있기를 바랍니다 🙂
답변
APK 파일을 포함하여 빌드 변형의 이전 빌드 출력을 삭제했습니다. 그게 나를 도와 줬어
답변
자동 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 {}
}
이전 구현을 가능하게합니다.
이것이 당신 편에서 작동하는지 알려주세요?
답변
안드로이드 스튜디오를 업데이트 한 후에도 같은 오류가 발생했고 프로젝트를 정리하여 문제를 해결했습니다 (빌드> 프로젝트 정리! 🙂
답변
