July 6th, 2010
Scriptroid - easy android framework tester using Beanshell


Beanshell에 초간단 UI입혀놨습니다.
android API 테스트를 위해 프로그램을 작성해 올릴 필요 없습니다.
activity라는 내장 변수가 선언되어 있으니 이를 통해 Context나 Window따위에 접근할 수 있습니다.
ASE(Android Scripting Environment)가 있지 않느냐?’ 는 질문이 있을 수있는데 그들이 지원하는 API는 극히 제한되고 별개의 것이어서 app 개발 하는데 도움이 크게 안됩니다.

Beanshell을 선택한 이유는 Dalvik은 동적으로 bytecode를 생성해서 실행시키는 류의 스크립트는 구현이 불가능하기 때문입니다. 이런 순수 interpreter 방식의 JVM language가 어떤게 또 있는지는 모르겠습니다(찾아보기도 구찮어..T_T)

APK Download

토론토로 향하는 인천공항에서..T_T

July 4th, 2010
제보-안드로이드에서 네이버메일의 OpenXml 문서 다운로드 문제

안드로이드 폰에서 네이버 웹메일에 접속해서 메일에 첨부된 OpenXML 문서를 다운로드하면 확장자가 바뀌는 문제가 있다. 예를들어 첨부파일명이 ’super.pptx’ 인데 브라우져로 다운로드 하면 ’super.ppt’로 바뀐다.
왜 이런 일이 발생하는지 좀 살펴봤다.

결론을 먼저 말하면 mime type을 respose에 잘못 넘겨주기 때문인데
이 오류는 모바일 버젼(m.naver.com)에서만 발생한다. ( 그렇다고 desktop 페이지에서도 mime type을 아름답게 넘겨주지는 않더군요 )

아래는 agent를 iphone으로 설정한 후 네이버메일이 첨부된 PPTX문서를 다운로드 할때의 header정보다.

PPTX면 ‘application/vnd.openxmlformats-officedocument.presentationml.presentation’이 나와야 하는데 PPT의 mimetype인 ‘application/vnd.ms-powerpoint’가 나온다.

DOCX, XLSX도 정확히 똑같게 동작한다. (OpenXML이 아닌 binary format의 mimetype이 넘어온다).
‘Content-Disposition’ header에는 파일명이 바르게 입력되어 오는데 이 때문에 다운로드에는 mimetype이 중요하지 않다고 생각할 수 있다.

하지만 Android는 특이하게도 다운로드 할 때 HTTP response의 mimetype으로 저장할 파일명의 확장자를 변경한다. (의도는 정확히 모르겠다)
파일명을 변경시키는 과정은 android API인 URLUtil.guessFileName() 소스를 보면 알 수 있다.

최강의 기술력 네이버.. 띡 고쳐 주세요.