본문 바로가기

Programming/안드로이드/루팅/어플개발

어플리케이션의 반응속도를 조금 더 향상 시키기(루팅 유저만 가능) - 2탄

이번에 알려드릴 팁은 어플리케이션의 반응 속도를 조금 더 향상 시키기 2탄 입니다.
(Tasker 뿐 아니라 다른 어플리케이션도 같은 방식으로 사용 할 수 있습니다.)

이번 팁 역시 루팅이 필수이며(system 영역 및 dalvik-cache 영역에 접근 해야 합니다.) 
되도록이면 기존의 팁인 http://goo.gl/lxfSKQ 을 적용 해 보셨던 분들만 적용하시길 바랍니다.
Tasker.apk 파일을 예로 들어 설명 하겠습니다.
기존의 팁에서는 단순히 Tasker.apk 파일을 data영역에서 system영역으로 옮기는 방식만 사용 하였습니다.
이번 팁에서는 여기서 한 발 더 나아가 Tasker.apk파일을 Tasker.apk파일과 Tasker.odex 파일로 나누어 system 영역에
집어 넣는 방법으로 성능 향상을 얻게 됩니다.
(단, 기존의 방식이 체감상 또는 아주 약간의 성능 향상을 가져 왔을 수도 있듯이 이번 방식도 눈에 띄는 엄청난 성능 향상을 
기대 하시면 안됩니다. 플라시보 효과 일 수도 있고 1%정도의 성능 향상만이 있을 수도 있습니다.)

루팅을 하고 커스텀 롬을 왔다갔다 하신분들이라면 odex롬과 deodex롬의 차이를 아실 겁니다.
system/app 폴더에 있는 파일들이 xxxx.apk 파일만 있다면 deodex 롬이며, xxxx.odex 파일도 있다면 odex롬 입니다.
맨 처음 루팅을 하고 커스텀 롬을 올리지 않은 상태라면 odex상태이며 테마 등의 수정을 위해 커스텀 롬을 올리셨다면 
대부분 deodex 상태 일 겁니다. 
제 경우 스마트 폰을 처음 샀을 때 부터 루팅을 하고 커스텀 롬을 왔다갔다 하며 무수히 많은 롬을 사용 해 봤지만
확실한 것은 odex 롬의 경우가 부팅속도, 앱 목록 로딩, 앱 실행 속도가 더 빠르다는 것 입니다.
odex 롬은 시스템 어플리케이션의 apk파일 내부에 classes.dex 파일이 따로 존재 하지 않으며,
원래 apk파일내에 있어야 할 classes.dex 파일이 각 시스템의 프레임워크에 맞는 구조로 odex화 되어 system/app영역에 apk파일과 같이 존재 하게 됩니다. deodex롬은 시스템 어플리케이션의 apk 파일 내부에 classes.dex 파일이 같이 존재 하게 됩니다.
이런 deodex롬과 사용자가 마켓에서 다운받아 설치하는 apk 파일들은 전부 apk파일 내부에 있는 classes.dex 파일이 각 시스템의 프레임워크에 맞게 odex화 되어 dalvik-cache 영역에 xxxx.dex 파일로 풀어져서 존재하게 됩니다.
이번 팁은 이것을 이용한 것입니다.

그럼 간단하게 방법을 설명 드리겠습니다.

1. 혹시 모르니 현재 롬을 리커버리 백업 해 둡니다.
(하지 않으셔도 되며 이 작업에서 시스템이 망가져 부팅이 안될 확률은 낮지만
저는 책임 지지 않습니다.)

2. tasker의 데이터를 xml 파일로 백업해두거나 티타늄 백업 등의 어플리케이션으로 tasker 자체를 백업 해 둡니다.
(혹시 모를 상황을 대비 한 것이지만 이 과정은 해 두시길 권장 합니다.)

3. data/dalvik-cache 폴더에서 system@app@net.dinglisch.android.tasker@classes.dex(자신이 tasker를 시스템 영역으로 이미 옮겼다면) 혹은 data@app@net.dinglisch.android.tasker@classes.dex(tasker를 시스템 영역으로 옮기지 않았다면)
파일을 복사해서 sd 카드 영역으로 붙여넣기 합니다.

4. data/app 혹은 system/app 폴더에 있는 net.dinglisch.android.tasker.apk 를 복사해서 sd 카드 영역으로 붙여넣기 합니다.

5. system@app@net.dinglisch.android.tasker@classes.dex 파일의 이름을 net.dinglisch.android.tasker.odex 로 변경 합니다.

6. net.dinglisch.android.tasker.apk 파일을 7-zip 등의 압축 프로그램으로 열어 내부에 있는 classes.dex 파일을 제거 합니다.

7. system/app 폴더에 net.dinglisch.android.tasker.apk와 net.dinglisch.android.tasker.odex 파일을 집어넣고 권한을 바꿉니다.(system/app 폴더에 있는 다른 파일들과 권한을 동일하게 설정 하시면 됩니다.)

8. data/dalvik-cache 폴더에 있는 system@app@net.dinglisch.android.tasker@classes.dex 혹은 data@app@net.dinglisch.android.tasker@classes.dex 파일을 제거 합니다.

9. 재부팅 합니다. 

====> 추후에 어플리케이션을 업데이트 하시게 될 경우 다른 시스템 어플리케이션 처럼 system/app영역에 기존 버전의 xxx.apk, xxx.odex 파일이 존재하게 되고 data/app 영역에 업데이트 된 xxx.apk, data/dalvik-cache영역에 xxx.classes.dex 파일이 존재 하게 될 겁니다. 이 경우도 동일한 과정을 거쳐 진행 하시던지 그대로 두시던지 하시면 될 듯 합니다.(업데이트하는 경우는 테스트는 해보지 않았습니다.)

====> 이 과정을 거쳤을 때 발생하는 문제 등에 대한 책임을 저는 지지 않습니다. 모든것은 수정하는 본인이 감수해야 하는 책임이며 되도록이면 system 영역을 많이 건드려 보신 분들, 본인 폰의 rom이 odex롬 인 분들만 적용 해 보시길 권장합니다.