본문 바로가기

☆ 테마제작관련 ☆/테마제작강좌

[Odex Deodex 강좌 1] 오덱스 & 디오덱스란?


오덱스 디오덱스 이해하기 [Odex Deodex 원리]

안녕하세요 Azdesign™ 입니다. 기존의 있는 자료의 요점만 정리해서 새롭게 정리가 필요해서 리뉴얼 해서 포스팅 자료 위치를 조금 옮겼습니다. 조금 내용을 단순 명료하게 정리해 드리겠습니다. 


테마작업을 할 때 현재 기능테마에서는 Apk파일 뿐아니라 Odex부분도 함께 수정을 해서 기능테마를 구현하고 있습니다. 이유는 Apk와 Odex파일는 하나의 짝을 이루고 있습니다. 그래서 단순 이미지 변경 및 xml 상의 layout변경은 Apk를 디컴파일해서 수정가능합니다.


하지만 문제는 Apk와 Odex와 짝을 이루고 있기 때문에 소스를 확인해보면 Odex 부분으로 기능 및 관련 소스를 연결시켜놓은 부분들이 나옵니다. 초창기에는 Odex수정을 많이 하지 않았지만 타기종의 다양한 기능을 자신의 기종으로 구현하기 위해서는 Odex작업이 이젠 거의 필수가 되어버렸습니다.


그래서 노트1에서 배포하는 테마의 압축파일을 풀어보면 많은 Odex파일이 존재함을 알 수 있습니다.

제 테마 파일은 Odex롬이기 때문입니다. 그럼 Odex와 함께 많이 들어본 Deodex라는 놈은 배포롬을 확인해보면 Odex파일이 존재하지 않습니다.


Apk(Jar)와 Odex를 묶어서 Deodex해서 입니다. 가끔씩 테마를 적용해보면 최초 부팅 뿐아니라 재부팅시에도 

"안드로이드 운영체제 업그레이드중" 문구를 확인할 수 있는데 이건 오덱스롬안데  Deodex된 파일이 있어서  디오덱스된 Apk내의  Dex파일을  달빅가상머신이 파일내의 dex파일을 읽어서 달빅캐시를 생성하는 가운데 나오는 문구입니다. 전체를 모두 디오덱스롬으로 제작을 하면 초기 구동할 때만 문구가 발생합니다.



Odex(오덱스)

Optimized(최적화된)  + dex file (최적화된 Dex화일)



Dodex(디오덱스,데오덱스) 

De(빼다)  Optimized(최적화된) + dex file (odex파일성질 apk파일안에 포함)








그러면 왜 Odex Deodex를 알아야할 까요? 

그냥 Apk수정 하고 Odex수정하면 되는거 아니냐라고 물어보시는 분도 계시겠지만...



여기서 문제가 발생합니다.

Apk는 디컴해서 수정이 가능하지만 Odex는 바로 수정이 불가능합니다.








오덱스 디오덱스 [Odex Deodex] 필요성

테마작업을 조금 디테일하게 하기 위해서는 Odex를 수정해야하는데 그 Odex을 수정하기 위해서는 Deodex파일을 변환해서 Dex파일을 추출한 이후에 수정 가능합니다.


하지만 dex파일 추출해서 smali파일로 변환을 한다해도 이 언어는 전문적인 지식이 없으면 전혀 불가능합니다. Apk파일은 보통 Html과 구조가 비슷해서 쉽게 이해가 가능하지만 smali언어는 Java를 Dex파일로 컴파일한 후 다시 디컴파일한 파일이라 전문적인 지식이 없으면 손댈 수 없습니다.[좌절...]


하지만 친절하게 xda에서 관련 구문 수정강좌가 진행되고 있습니다. 해외기기에 대한 자료지만 기본적인 구조가 국내기존과 같아서 필요한부분만 적용할 수가 있습니다. 보통 포팅이라는 표현을 많이 하는데 사실 포팅이라기 보다는 구문 입력 수준이지요. 하지만 이방법도 쉽지가 않고 많은 시간과 노력을 요하는 작업입니다.


이런한 작업을 하기 위해서 저흰 deodex해서 다시 자신의 폰에 적용할 수 있게 Odex로 변환하는 방법을 알아야하는겁니다.



Odex(수정불가) + Apk(수정가능) =  Deodex (수정가능)

odex 상태에서는 수정이 불가능하기 때문에 수정가능한 상태 (Deodex)화 해서 수정








앞으로 진행하게 될 Odex 를 Deodex화 하여 다시 Odex화 하는 구조도 입니다.







 






이상으로   포스팅을 마치도록하겠습니다.

조금이나마 테마작업하는데 도움이 되어드리고자 포스팅 하고 있는 


Azdesign™ 입니다.^^