다시 수요일의 FAQ 시간이 왔습니다. 이번주는 iOS builds, API documentation 과 안드로이드에 대해 자주 질문 되는 것들을 추려봤습니다.
1. I’m using build 922 and I’m getting a code signing error after an iOS build. What’s wrong?
build 922 부터 코로나는 iOS 6 SDK 에 대해 빌드 할 수 있도록 했습니다. 여기에는 Xcode 4.5 가 필요합니다. Xcode 가 4.5 이전 버전일 경우 이 에러메세지를 보시게 됩니다.
2. I see new APIs added to Corona but the API docs are not being updated.
web 상의 API documentation은 현재 릴리즈 된 버전 (2012.894) 에 대한 documentation 입니다. 이 API에 대한 documentation은 Daily Builds page의 zip 파일로 압축돼 있는 Daily Build 안에 추가되거나 수정 된 내용이 들어갑니다.
3. I’m trying to use File I/O on Android to read files and it’s not working. It does work in the Simulator and on iOS. Is this a bug?
Android APK 는 zip 파일 입니다. 리소스 디렉토리에 있는 파일들은 APK 파일 안에 들어가게 됩니다. 즉 zip 파일로 압축된다는 얘기죠. io.open() 같은 Lua I/O API는 zip 파일 안에 있는 파일들을 압축을 풀어서 오픈할 수가 없습니다. 그러니까 APK 안에 있는 파일을 오픈하지 못하는 겁니다.
그래서 저희들은 안드로이드와 관련해서 특별하게 동작할 수 있는 기능을 구현했습니다. system.pathForFile() 이라는 건데요. 특정 파일 타입에서 이 메소드는 자동으로 그 파일의 압축을 풀어서 outside 디렉토리에 copy를 합니다. 일종의 해킹이랄 수 있는데요. 좋은 방법은 아닙니다. 왜냐하면 storage 공간을 낭비하는 일이거든요. 어쨌든 이 방법으로 Lua I/O API들이 특정 파일 타입들에 access 할 수 있습니다.
system.pathForFile()은 다음과 같은 파일 형식을 제외한 파일 타입들을 자동 압축 해제 합니다. : *.html *.htm *.3gp *.m4v *.mp4 *.png *.jpg *.ttf
무슨 의미냐 하면요 위의 파일들은 Lua I/O API로 access 할 수 없다는 의미입니다. 다른 모든 파일들은 system.pathForFile()을 call 하면 자동적으로 압축을 풉니다. 이런 이유로 여러분은 여러분의 HTML file에 access 할 수 없는거죠. HTML 파일이 auto-extracted 되지 않는 이유는 HTML 파일에는 이미지들도 링크가 돼 있기 때문에 Corona 가 이 웹 페이지를 보이도록 하려면 이미지들 까지 auto-extract 해야 되기 때문입니다. 만약 그렇게 되면 이미지들은 아주 많은 저장공간을 차지하게 될 겁니다. 그래서 이 기능을 넣지 않는 겁니다.
위의 파일들에 access 하는 한 방법은 (e.g. png, jpg) file.png.txt 같이 rename 하는 겁니다. 그러면 특정 파일을 Documents나 Temporary 디렉토리에 copy 할 수 있을 겁니다. 그리고 나서 다시 원래대로 이름을 되돌리면 되겠죠. 용량이 큰 파일이라면 메모리 공간을 아주 많이 소비할 거라는 것을 명심해 두세요.
4. I’m displaying an image and trying to update it with a new image and it’s not updating. What’s wrong?
코로나는 파일 이름을 근거로 해서 이미지 데이터를 캐싱합니다. 똑 같은 이름으로 이미지를 로드하려고 한다면 그리고 이전 이미지가 현재 active 상황이라면 코로나는 이것을 같은 이미지로 생각할 겁니다. 그러면 이전 이미지를 사용하겠죠. 이런 상황은 서버에서 이미지를 가져오는데 실제 이미지는 바뀌었는데 이름은 바뀌지 않은 경우에 발생합니다. 해결 방법은 로딩하기 전에 새 이미지의 이름을 바꾸거나 새로운 이미지를 로딩하기 이전에 이전의 이미지를 지우는 겁니다. 이전 이미지 객체에 removeSelf를 call 하세요. 그러면 이미지 데이터와 파일 이름 사이의 관계까지도 remove 될 겁니다.
5. How to get a cleaner ADB Logcat debug display
이건 질문은 아니고 그냥 제가 코로나 포럼에서 찾아내서 알려드리는 팁입니다. (그 글을 올린 분 성함이 없어서 밝히지를 못합니다. 죄송합니다.) 그 팁은 Android OS 가 보내는 다른 busy 메세지들은 보이지 않고 그냥 print 메세지만 보이게 하는 방법입니다. Android SDK를 인스톨 하신분들은 코드를 디버깅할 때 ADB 프로그램을 사용 하실 겁니다.
안드로이드 SDK 에서 아래와 같이 adb를 실행하세요.
만약 제대로 작동하지 않으면 파라미터들을 없애고 다시 시도해 보세요.
여기까지고 오늘의 FAQ 들이었습니다. 감사합니다.
'Corona SDK > Corona SDK TIPs' 카테고리의 다른 글
Lua 의 퍼포먼스 향상을 위해 알아두어야 할 것 들 (0) | 2012.11.07 |
---|---|
수요일의 FAQ : Lua 프로그래밍 팁들 (0) | 2012.11.02 |
FAQ Wednesday: Display Objects (0) | 2012.10.26 |
Sprite Sheet 활용하기 (Advanced) (0) | 2012.10.12 |
FAQ Wednesday: iOS 6 버그들 (0) | 2012.10.09 |
FAQ Wednesday: iPhone 5 와 iOS 6 (0) | 2012.09.21 |
FAQ Wednesday: native.newTextField and native.newTextBox Events (0) | 2012.09.13 |
선그리기 기초 부터 (2) | 2012.09.09 |
FAQ Wednesday: Event Listeners 와 Display Objects 제거하기 (0) | 2012.09.08 |
Friday Night Forum: Navigating a Jungle of Content (0) | 2012.09.02 |