안드로이드 사용자 모임 게시판
(글 수 3,442)
개발자 입장에서 쓰신 글인데 일반인으로써 공감이 가서 올립니다..
링크 주소. http://blog.naver.com/huewu/110081754841
[출처] 안드로이드 개발자의 메모리 제한 문제 체험기 -1-|작성자 휴
링크 주소. http://blog.naver.com/huewu/110081754841
2010.03.16 14:47:57
좋은 글 소개해주셔서 감사합니다. ^^
구글이 애초에 하드웨어 제조업체들에게 내장메모리 용량을 512MB로 권장할 거였다면
개발가이드에 기본으로 리소스관리를 외장으로 빼라고 강권해야 옳지 않았나 생각이 들어요.
2010.03.16 15:40:03
영쾅킴 의견이 요즘 여론을 지배하는 다수의 의견이긴 하지만,
그렇게 되면 안드로이드 마켓의 Downloads 의 성능이 극히 저하됩니다.
SD카드는 언제든 빠지거나 교체될 수 있는 부분이므로, Downloads의 목록을 생성할 때 항상 새로 만들어야하기 때문이죠.
그 의견은 단지 아이폰을 따라하자는 것 밖에 안돼요.
그래서 아마 나중에도 외장메모리에 설치되는 옵션은 포함되지 않을 거 같아요...
하지만 다운로드된 앱 버전관리를 위해 apk파일 자체를 백업해놓는 건 뭔가 대책이 필요하겠죠.
현재 말도안되는 내장메모리 부족의 원흉이 바로 이것이기 때문입니다.
어차피 버전 번호(시간)만 확인하면 되고, 업데이트를 실행할 때 apk를 새로받는다는 점에서
기존 apk를 백업할만한 조금의 이유도 없습니다.
2010.03.16 15:53:30
리소스를 위부로 빼는게 쉽지는 않습니다.. APK라는 파일 형식은 Java Class와 여러가지 리소스 파일들을 포함하고 있습니다.. 프로그램을 깔면 내부 메모리를 이중으로 먹는 이유는, Java class때문입니다. 설치를 하는 도중에, 안드로이드는 실행 파일 격에 해당하는 classes.dex를 APK파일에서 추출해서 Dalvik-cache로 카피해 놓습니다.
Docs to Go를 예로 든다면, APK크기는 3,390,121바이트이고, 그 안에 classes.dex는 4.035624 byte입니다. 리소스는 다른 곳으로 옮겨지는 것이 아니라, APK파일 안에 남아 있습니다. 따라서 리소스는 APK외에 별도의 용량을 차지 하지 않습니다. 사실 크기 문제를 해결하려면, 설치 후에는 classes.dex를 APK에서 빼버리는게 맞지 않나 합니다.. 일단 APK자체는 수정이 안되기 때문에, 리소스를 SD Card로 빼는 식의 별도 관리를 위해서는 리소스를 APK파일에 포함해서 배포할수는 없습니다.. 대신 첫번째 실행할때 인터넷에서 다운을 받던가 하는 식으로 해야 되죠.. 그런데, 확실히 관리하기는 힘들어 집니다. 파일 하나로 관리하는게 아니라, 리소스파일 하나 하나를 관리해야 되죠.. 서버 관리하는데 별도의 비용도 지불해야 하고 말이죠.. 버전 관리도 쉽지 않을 겁니다..
게임 이외에는 또 리소스가 크진 않습니다. 리소스가 UI layout이나 icon등 비트맵을 포함하는데, 유틸리티들은GUI가 그렇게 화려하진 않으니까요.. 그리고 게임은 이미, 게임 리소스를 별도로 다운 받는걸로 압니다. 그리고 일단 리소스가 SD Card로 넘어가게 되면, 복제에 무방비 해 집니다.. 비트맵등 GUI구성 요소들이 불법 카피에 그대로 노출되거든요.. 바로 볼수가 있으니까요.. 유료앱을 만드는 사람들이 이렇게 할수 있을까요?
구글이 해결해 주면 제일 깨끗하게 간단한데, 개발자들이 이런 방법 저런 방법 사용하는것도 다, 임시 방편인것 같습니다.