마켓에 버그가 리포팅되어 확인해보니
ICS 에서는 Canvas의 drawPicture() 사용시 UnsupportedOperationException 가 발생하게 처리되어 있더군요....ㅡㅡ;;
GLES20Canvas.java 에 해당 exception 이 발생되게 처리되어 있던데요..
제가 갤2 ICS 버전에서 확인해본바 문제점이 발생을 하지 않습니다.
구글링 해보니 하드웨어 가속관련하여 설정하면 문제가 발생한다고 하는데...어디서 설정하는지...ㅡㅡ;;
명시적으로 아래와 같은 코드를 추가하라고 누군가가 적었는데...
문제증상이 나오지 않으니 확인을 할 방법이 없네요..
View.setLayerType (View.LAYER_TYPE_SOFTWARE, NULL);
혹시 이와 관련되어 수정을 하셨거나, 검토해보신 분이 계시면
어디서 설정을 해야 해당 Exception이 발생하는지와
어떻게 처리하면 해당 Exception이 발생하지 않게 할 수 있는지 알려주시면 감사하겠습니다.
그럼, 전 짧은 영어로 계속 구글링을 해보겠습니다...ㅡㅜ
UnsupportedOperationException 이거 자체가 제가보기에는 기기에서 하드웨어가속을 지원하냐 않하냐 문제가 아닐가 싶은데요....
하드웨어 가속을 지원하는 기기에서 저 옵션을 켜게 될 경우 drawPicture() 호출시에 GLES20Canvas.java 파일의 drawPicture()를 호출하게 되는데 해당 소스를 보면 UnsupportedOperationException()를 발생시키도록 되어 있어서요...ㅜㅜ
기본적으로 해당 옵션은 disable 되어 있는거 같은데 일부 유저들이 저 옵션을 켜고 사용하네요...
좀만 더 찾아보고 정 안되면 하드웨어 가속시에는 drawPicture()를 사용치 않는 방향으로 진행할려고 합니다.




일단 ICS 의 개발자 옵션에 "GPU 렌더링 강제 실행" 이라는 것이 있네요.
이 옵션을 켜면 drawPicture() 사용시 위와 같은 에러가 발생을 합니다.
android:hardwareAccelerated="true"로 해도 동일하게 에러가 발생을 하네요..
에러를 없애는 방법은 아직 못찾았습니다.
"GPU 렌더링 강제 실행" 옵션을 켜게 되면
android:hardwareAccelerated="false" 로 해도 에러가 발생을 하고
drawPicture() 사용하는 View에서 View.setLayerType (View.LAYER_TYPE_SOFTWARE, NULL); 를 사용해도
처음 한번은 괜찮은데 다시 drawPicture()를 사용하면 또 에러가 나네요..
이것때문에 오늘 잠 못잘듯 하네요...ㅡㅜ