에러 화면

 

 

플랫폼: 안드로이드 스튜디오(Android Studio)


오류 현상: InflateException-UnsupportedOperationException type 3으로 인한 어플리케이션 강제 종료

 

android.view.InflateException: Binary XML file line #16: Binary XML file line#16: Error Inflating class TextView

Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class TextView

Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 2 to dimention: type=0x3



사유: android:textSize 값을 dimen 타입으로 주지 않고 string type으로 줘서 생긴 오류. 이외에도 dimention 타입으로 줘야하는 값을 다른 타입으로 주면 xml 분석이 안 돼서 view inflate가 안 됩니다.

 

왜 이런 코딩을 했느냐 한다면, 앱 전체의 폰트 사이즈를 변경하는 방법을 찾아보다가 string.xml에 넣어서 할 수는 없을까? 라는 헛된 생각을 했고... listview를 inflate 하기 전까지는 오류가 있는 줄도 모르다가 그렇게 되었습니다.

 

type 3이라는 거 보니 다른 문제 타입도 있는 듯함.

 

해결책: xml에 dimen 값(dp 등)을 줍시다.

 

 

 

 

그외 시도 방법:

 

sleep() 함수를 사용해서 출력 후 3초 대기하고 종료되는 구문을 작성할 일이 있었습니다만, 이게 실행이 이상하게 돌아갑니다. 먼저 코드는 이렇습니다.

 

#include <stdio.h>
#include <unistd.h>

int main(void){
	
	printf("출력 후 3초 대기");
	sleep(3);
	return 0;
}

 

코드를 보면 printf() 함수로 문장을 출력한 뒤 sleep(3)에 도달해 3초를 대기한 뒤 종료되어야 하는데, 3초를 대기한 뒤 출력되자마자 종료됩니다.

 

이해를 돕기 위해 영상으로 가져왔습니다.

 

오류 상황; 출력 타이밍이 이상함

 

해결법: 앞에 삽입된 printf()문의 마지막에 개행문자를 삽입합니다. 코드로 보면 이렇게 됩니다.

 

#include <stdio.h>
#include <unistd.h>

int main(void){
	
	printf("출력 후 3초 대기\n");
	sleep(3);
	return 0;
}

 

 

플랫폼: cygwin/vim (unistd 헤더 사용)

런타임 에러

사유(추측): 처음에는 concurrency 문제로 생각했지만 개행문자의 유무에 따라 결과가 바뀌는 것을 보니 printf() 함수의 버퍼 문제 아닐까 생각됨. 이런 시스템 내부 문제가 제일 골치 아픔. 정확한 이유는 더 알아봐야할 듯하다... 아시는 분이 계신다면 지도편달 부탁드립니다...

 

'C' 카테고리의 다른 글

[boost] No such file or directory  (0) 2023.06.01
vcpkg manifest missing  (0) 2023.06.01

근로장려금으로 조립 데스크탑을 맞췄습니다.

새 컴퓨터를 샀으니 새로운 마음으로 편집기를 줄줄이 깔아 과제며 개인 프로젝트며 옮기기 시작했는데, 현재 안드로이드 개발만 데스크탑으로 못 옮긴 상태입니다.

 

avd가 아예 먹통이라서인데요. 제 노트북이 과열로 죽기 전에 정신을 차려야 할 텐데 큰일이네요.

 

시도했던 방법들을 기록해둡니다.


플랫폼: 안드로이드 스튜디오(Android Studio)

기타 오류

 

현상

avd 작동 안 됨. 오류 메시지 없음.

avd 디바이스는 보이지만 검은 화면으로, 부팅이 되지 않고 물리 버튼에 해당하는 우측 버튼(기기 회전, avd terminate 등)만 작동.

 

오른쪽 바의 버튼들만 작동

사유: 안드로이드 버전 문제 같습니다. 정확한 사유는 알 수 없는데, 아마 안드로이드 10과 다른 요소들이 충돌한 것으로 보입니다. 대체로 새로운 버전들은 조금 불안정한 면이 있으므로 상황에 따라 적절한 OS를 사용합시다.

 

해결책: 가상기기의 안드로이드 버전을 안드로이드 10에서 안드로이드 9로 내렸습니다. 너무 잘 되네요.

 

 

 

 

그외 시도한 방법들(실패함)

  • 가상기기 삭제 후 새 기종 설치
  • 안드로이드 스튜디오 삭제 후 재설치
  • cold boot
    가상기기가 무응답일 때 시도해볼 수 있으나 보통 작동은 되지만 무응답인 경우에 사용
  • wipe data
    무한 로딩일 때 Waiting for all target devices to come online 메시지에 대한 해결책1
  • invalidate cache/restart
    무한 로딩일 때 Waiting for all target devices to come online 메시지에 대한 해결책2
  • haxm 설치
  • 그래픽카드 드라이버 재설치
    드라이버가 없거나 너무 오래된 경우 avd가 동작하지 않는 케이스가 존재한다는 말이 있어 시도.

 

 


코딩하다가 오류가 나면 무슨 오류인지 플랫폼, 언어 별로 기록합니다.
단순 실수도 반면교사로 삼습니다. 어딘가에는 저 같은 사람이 또 있겠지요.......



+ Recent posts