본문 바로가기

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

Odex 변경하기 [오덱스화]



Odex작업하기

테마제작 관련해서 포스팅이 많이 늦어졌네요. 사실 제가 테마제작에 관한 정보를 공유하고 있지만, 저보다 훨씬 뛰어난 능력자들이 많아서 오히려 요즘은 저도 배우고 있는 입장이네요. 테마제작은 몇 번만 해보시면 사실 크게 어려운 작업은 아닙니다. 그 몇 번 중 한 번만 성공한다면 그다음부터는 참 쉬운 작업이 됩니다.


제가 지금까지 테마제작강좌 관련 기본내용과 테마 이미지 이식하기 까지의 강좌를 진행했는데 사실 이전 강좌만 보시더라도 테마제작에 어느 정도 기본지식은 다 습득이 되었습니다. 아니 몇 몇 분은 저보다도 오히려 더 빠른 작업과 노하우가 쌓이신 분도 많습니다. 


제 기초강좌를 보시면 Apk의 xml을 수정하고 적용하는 방법에 대해 어느 정도 이해가 다 되었을 거라 생각을 합니다. 오늘은 테마작업하시면서 까다로운 Odex 변환 과정을 웃음투자님께서 알려주신 시스템앱으로 조금 상세한 스샷을 통해서 하나하나 설명하면서 알려드릴게요. 사실 테마작업은 데오덱스 상태로 진행을 합니다. 그 후 배포하기 전에 Odex과정을 거치게 되는데 이게 PC에서만 하다보니 여간 귀찮은 작업이 아니었습니다. 




웃음투자님 덕분에 간단하게 짬날 때 폰으로 오덱스 변환을 할 수 있어서 정말 편해졌습니다. 

아래 웃음투자님 사이트 방문해주셔서 응원의 댓글 많이 많이 달아주세요^^ 

웃음투자님 블로그 바로가기









자료 포스팅 하는데 힘이 될 수 있도록

ViewOn 손가락 버튼 꾹 눌러주세요.

(로그인 안하셔도 됩니다)







오덱스라는 파일은 해당 기기가 없으면 제작할 수 없습니다. 달빅캐시 내에 파일을 만드는 부분이라 제가 다른 통신사 및 기종의 오덱스 파일을 만들 수 없습니다. 그리고 펌웨어만 바뀌어도 오덱스 파일은 호환이 거의 안 된다고 보시면 됩니다. 그렇기 테마제작하시는 분들은 까다로운 오덱스 파일보다 디오덱스로된 파일을 선호합니다.

(타 기종, 타 통신사 테마 제작은 오덱스파일 제작 및 테스트가 불가해서 만들기가 쉽지 않습니다.)


그럼 제작자들이 말하는 오덱스화, 디오덱스화라는 말을 간단하게 정리하면 보통 System/app폴더 안을 보시면 

SecSettings.apk와 SecSettings.odex가 한 쌍을 이루면서 2개로 나뉘어 있습니다. 이 상태가 오덱스화된 상태이면 SecSettings.apk만 단독적으로 존재할 수도 있습니다. 사용자어플은 xxx.odex파일이 Apk파일안에 dex상태로 합쳐져 있는데 이렇게 단독으로 존재하면서 실행되는 파일을 디오덱스(데오덱스)화 된 파일이라 합니다. 

사실 데오덱스로된 파일로도 실행하는 대는 전혀 지장이 없습니다. 다만 폰리부팅시 "업그레이드 중...."이라는 문구가 항상 나오게 됩니다. 스마트폰을 킬 때마다 디오덱스 파일내의 dex파일에 대응되는 dex파일을 달빅캐시내에 만드는 과정이 일어나기 때문입니다.





많은 분이 오덱스라고 하면 포기하시는데 

오덱스 변환이라는 거 xml만 수정하실 줄 아신다면 odex도 쉽게 변환하실 수 있습니다. 




Deodex파일 Odex로 변환하기

Odex파일을 Deodex로 변환하는 방법은 Autodeotool로 한방에 변환이 가능합니다. 이전 강좌를 보시면 아시겠지만 Deodex로 변환하는 이유는 Odex를 수정하기 위한 과정이라고 설명해 드렸습니다. 그래서 오덱스파일을 디오덱스로 변환 후 Smali수정을 하게됩니다. 




Odex관련 강좌 보러가기

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


Odex [Deodex] 강좌 #2 [부제 : dex화일 추출]


Odex [Deodex] 강좌 #3 [부제 : dex화일 수정 및 적용]


Odex & Deodex[오덱스 디오덱스] 명령어 정리





수정이 끝난 후에는 다시 dex파일을 추출 해서 디오덱스로 만들게 됩니다. 여기까지는 크게 스크립이 번거롭지 않습니다. 이후 폰에서 Deodex를 Odex로 변환하는 과정에서 ADB를 통해 많은 명령어을 입력해줘야합니다.


Framework폴더 내의 파일(android.policy.odex, framework2.odex, services.odex)은  ADB를 통해서 변환을 해줘야 하지만 System/app 경로에 있는 파일들은 어렵게 번거럽게 ADB를 통하지 않고 휴대폰에서 간단하게 변환할 수 있습니다. (웃음투자님께서는 Framwork폴더 내의 파일도 가능하다고 설명하셨지만, 저와 몇몇 지인분은 오류가 자주나서 Framwork폴더내의 Jar파일은 Adb를 통해 변환하고 있습니다.)


간단하게 작업방식을 요약하면 Deodex파일을 적용하게 되면 "/data/dalvik-cache "경로에 Dex파일에 대응되는 app@xxx.apk@classes.dex 파일이 생성이 됩니다. 이 파일의 이름을 xxx.odex 로만 바꿔주시면 Odex파일이 생성이 됩니다.


폰을 연결해서 어려운 ADB명령을 줄 필요없이 Deodex화 된 파일을 폰에 적용 후에 생성되는 Dalvik-cahe내의 파일이 변환해서 생성되는 오덱스파일과 같다는 내용입니다. 


어렵게 생각하지마시 제가 예로 하나의 데오덱스파을 스마트폰에 적용해서 달빅캐시내에 Odex파일 추출 과정을 스샷을 통해 설명해 드릴게요^^




Deodex==> Odex 변환 과정 스샷으로 확인하기

지금부터의 단계는 수정된 dex파일은 Apk안에 넣어둔 상태에서부터 시작이 됩니다. [Odex 포스팅 참조]

<오덱스를 디오덱스화 해서 dex파일을 수정하고, 수정된 dex파일을 아래와 같이 apk안에 넣은 상태입니다.>




자 아제부터 간단하게 스마트폰을 이용해서 디오덱스 파일을 오덱스로 변환해 볼께요.

본과정을 진행하기 위해서는 아래 두 가지의 어플이 필요합니다. 포스팅 보시고 미리 설치해주세요^^


강력한 기능의 파일관리자 앱 추천 [Total commander 사용법]


 루트익스플로러 사용법 / rootexplorer 사용방법 / 루트익스플로러 테마설치방법




 Total Commander와 Root Explorer를 준비되었죠?




자 아제부터 간단하게 스마트폰을 이용해서 디오덱스 파일을 오덱스로 변환해 볼게요.



오늘은 디오덱스된 SystemUI.apk파일에서 Odex파일을 추출해볼게요. 사실 스샷을 최대한 많이 찍어서 뭔가 복잡해 보이지만 한 번만 따라 해보시면 어렵지 않게 다른 파일들도 작업하실 수 있을 겁니다.




우선 루트익스플로러에서 오덱스파일인지 디오덱스파일인지는 해당파일을 클릭하시면 패키지 설치 관리자가 나옵니다. 이때 보기를 누르시면 내부파일을 볼 수 있는데 classes.dex파일이 있다면 디오덱 파일입니다.

<좌측은 루트익스플로러로 확인한 모습, 우측은 Total Commander로 확인한 모습>


  




dex파일을 통해 디오덱스 파일 확인 하셨죠?

그럼 아래 스샷으로 ^^







1) 우선 루트익스플로러로 디오덱스된 SystemUI.apkSystem폴더로 보내주신 후 퍼미션 644를 주세요.

  




2) SystemUI.apk를 꾹 누르시면 팝업창이 나오는데 이동을 누르신 후 System/app폴더에 덮어씌워 주세요.

  





3) 디오덱스 파일이라 Odex는 필요 없습니다. SystemUI.odex파일을 SystemUI.bak파일로 변경하시거나 따로 백업을 해주세요. [아래 스샷처럼 이름정렬 했을 때 SystmUI.apk 밑에 SystemUI.odex파일이 없는걸 확인





4) 달빅캐시에 오덱스를 생성하기 위해 리부팅해 주세요^^ (잠시 쉬는시간)




5) 리부팅이 완료되면 "업그레이드 중"이라는 문구가 등장 할 겁니다. 스마트폰이 알아서 오덱스를 생성해준 겁니다.



6) 그럼 오덱스작업을 위해 Sd카드안에 임의 폴더를 하나 만들어 주세요. 전 makeodex라는 폴더를 하나 만들었습니다.

    (하단에 "+"아이콘을 누르면 새항목만들기 팝업이 생성됩니다. 폴더를 선택하신 후 폴더이름을 정해 주시면 됩니다.)    

  



6-1) 아래와 같이 임의의 makeodex 폴더가 생성되었습니다.



7) 일단 루트익스플로러의 임무는 잠시 중단하고 이젠 Totalcommander로 선수 교체합니다.

  



8) Totalcommander프로그램을 실행시키신 후에 /data/dalvik-cache 폴더로 들어가세요.


이곳에 저희가 찾고자 하는 Odex파일이 숨겨져 있습니다. 보통 파일명이 경로@경로@xxx.apk@classex.dex파일로 존재합니다.

SystemUI.apk는 System/app경로에 있으니 system@app@systemUI.apk@classes.dex파일로 존재하게 됩니다.

아래 폴더를 밑으로 내려서 확인해 보시면 system@app@systemUI.apk@classes.dex 존재함을 알 수 있습니다.


9)이젠 classes.dex파일을 저희가 만든 임의의 폴더(makeodex)로 복사해주시면 됩니다. 복사방법은 파일을 꾹 누르고 계시면 팝업창이 뜨는데 클립보드로 복사를 누르신 후 폴더 이동하신 후에 위로화살표를 꾹눌러 보시면 붙여 넣기가 나옵니다.^^

  


   


10) 똑같은 방법으로 System/app 폴더 안에 있는 SystemUI.apk파일을 임의의 폴더(makeodex)로 복사해주세요.


11) 이젠 폴더안에 임의의 폴더 안에 system@app@systemUI.apk@classes.dex, SystemUI.apk파일이 생겼습니다.


12) system@app@systemUI.apk@classes.dex파일 이름을 SystemUI.odex로 변경해줍니다.

      (파일을 꾹 누르시면 팝업창이 나오는데 이름바꾸기 항목으로 이름을 SystemUI.odex로 바꿔주시면 됩니다.)

 



13) 이름만 바꿔주시면 SystemUI.odex파일이 만들어 진 겁니다.



14) 이젠 디오덱으로 된 SystemUI.apk에서 디오덱을 만들고 있던 Classes.dex파일만 삭제해주시면 됩니다.


14-1) SystemUI.apk를 눌러보시면 ZIP으로 열기 항목이 있습니다. 눌러주신 후 classes.dex파일을 꾹 눌러주세요.

   

14-2) 그러면 classes.dex 팝업이 뜨면서 삭제 명령이 나옵니다. 삭제 누르시고 예하시면 SystemUI.apk파일도 오덱화 완료^^

 




15) 용량을 확인해 보시면 아시겠지만 SystemUI.apk 파일 용량이 0.5M 정도 줄어든걸 확인하실 수 있습니다.




이젠 루트익스플로러로 System폴더로 복사하신 후 퍼미션을 주고 System/app폴더에 덮어 씌워주시고 리부팅하시면 됩니다.

 


 


스샷을 보시면 뭐가 이렇게 복잡해??? 하시는 분도 계시겠지만 저는 이런 작업 하는데 보통 1분안으로 가능합니다. 제가 포스팅해드린 Totalcommander와 루트익스플로러 폴더설정을 통해 즐겨찾기 폴더를 등록하신 후에

폴더이동 즐겨찾기로 이동하시면 정말 빠른 작업을 할 수 있습니다.



즐겨찾기 폴더는 System, System/app, dalvik-cache와 임의의 폴더 4개 정도를 즐겨찾기 폴더에 추가하신 후 작업해 보세요 정말 빠른잡업이 가능할 겁니다.^^



그 동안 테마관련 포스팅이 너무 늦어져서 최대한 스샷을 많이 넣어서 설명해 드렸습니다. 그냥 보기에는 너무 어렵기만 한 오덱스작업인지 모르겠지만 한번만 해보시면 별거아니구나라고 생각이 드실 겁니다.^^




그럼 오늘은 디오덱스파일 오덱스화 스마트폰으로 간편하게 변화하기 포스팅을 마칠께요^^




이상으로  Odex 변경하기 [오덱스화]  포스팅을 마치도록 하겠습니다.





포스팅 내용이 유익하셨다면 아래 ViewOn버튼 꾹 눌러주시고 

응원의 댓글 부탁드립니다.^^


조금이나마 테마작업하는데 도움이 되어드리고자 포스팅 하고 있는  Azdesign™ 입니다.^^






* 필  독 *

- 블로그내 모든 포스팅 내용 도용 및 2차배포는 금지합니다. -

루팅관련 자료 사용으로 인한 소프트웨어,하드웨어 오류에 대한 책임은 전적으로 본인에게 있습니다.

(항상 자료 사용하시기 전에 백업을 필수로 해주시고 자신의 기종과펌웨어 버젼을 확인하세요)