Odex 변경하기 [오덱스화]

2013.08.03 10:00





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차배포는 금지합니다. -

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

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



저작자 표시 비영리 변경 금지
신고


azdesign™ ☆ 테마제작관련 ☆/테마제작강좌 , , , ,



  1. Blog Icon
    한별

    디자인님, 안녕하세요 ^^
    너무 간단해서 놀랐습니다.
    소나기 조심하시고, 웃는 일만 가득한 주말 되세요^^

  2. 한별님정도면 이미알고계신 내용이시잖아요ㅎㅎ 보기는복잡해보여도 막상해보면 너무편한 방법입니다^^

  3. Blog Icon
    굿 럭키 가이

    좋은 정보 요즘 공부를 학교다닐때보다 더해요...ㅋㅋ

    디자인님 안녕하세요

    한별님도 안녕하세요....

    즐거운 주말되세요..

    전 오늘 휴일근무라 열심히 사무실나와서 에어컨 틀어놓고 음악듣고 잇어요

    디자인님 자료 이것저것 보면서...ㅋ

  4. 굿럭키 가이님 안녕하세요^^ 오늘 휴일근무..ㅜㅜ 그래도 에어컨 틀어놓고 음악듣는다니~~ 나쁘지는 않은거 같은데요??
    편안한 주말 보내시고 행복한 시간 만드세요^^

  5. 설명에는 app폴더 만 나와 있는데
    framework폴더에 있는 파일도 이방법 가능 하나요?

  6. 제능력이 부족한 탓인지... 지인몇분도 framework폴더내의 일부파일은 안 되는걸로 알고 있습니다.

  7. Blog Icon
    JG

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

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


    저는 재부팅을하면 바탕화면이 검은색으로되고 상단바가 사라지네요ㅠ
    토탈커맨더가도 파일이 안보이구요

  8. 퍼미션설정과 오덱스 삭제하신거 맞으시나요?

  9. Blog Icon
    JG

    네~~ 디오덱해서 수정완료하고 APK파일 644퍼미션주고 app에 넣고 밑에있는 오덱스 삭제하고 재부팅하니 검은색배경에 상단바 사라지네요

    제대로 다 한거같은데,,,

  10. apk안에 정확히 dex파일이 들어갔는지확인해보시고 잘 들어있다면 구문중에 잘못있는걸로 밖에 안보여지네요.

  11. Blog Icon
    JG

    혹시. [갤럭시S4 락화면 투명상단바 따라하기]에서 순서가.. 1.SystemUI.apk 수정
    2.1에서 수정한 SystemUI.apk 랑 SystemUI.odex 을 디오덱해서 수정하고
    3.핸드폰에 2에서 dex파일을 수정한 SystemUI.apk 넣어 오덱화
    4.android.policy.jar 디오덱해서 수정하고 오덱화

    이 순서가 맞나요?
    저는 2번순서때 재부팅하면 검은화면과 상단바 사라짐 현상이 나타나거든요..

  12. 디오덱스는 순정상태의 파일로 하시는겁니다.
    수정안된 apk와 odex를 디오덱스해서 디오덱스된 apk를 얻게 되는겁니다. 이렇게 얻은 디오덱스파일을 수정해서 dex추출.. 그리고 수정된 systemui.apk에 넣어주시면 됩니다.

  13. Blog Icon
    JG

    감사합니다^^
    다시해볼께요~~

  14. Blog Icon
    JG

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

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


    저는 재부팅을하면 바탕화면이 검은색으로되고 상단바가 사라지네요ㅠ
    토탈커맨더가도 파일이 안보이구요

  15. Blog Icon
    노트2K

    질문있어요..!
    /data/dalvik-cache/system@app@SystemUI.apk@classes.dex 가 안보이는데 어떻게 해야 보여지나요?ㅠㅠ (참고로 순정 루팅한 상태입니다.)

  16. 디오덱스상태에서 적용했을때 나옵니다.

  17. Blog Icon
    마이갓

    유용한강좌감사합니다.azdesign님 참고로 저도 JG님처럼 바탕화면검게되고 상단바사라지고 classes.dex도 안생겨서 안되는구나포기할려다 생각해보니 deodex된 apk를 컴파일-수정-디컴파일하고 그거 그대로 적용하려했지요.. 해서 수정하고디컴파일한 apk 파일에서 classes.dex 만 빼서 deodex된 수정안된 apk파일로 이동시켜준걸 적용하니 강좌에서처럼 진행되었습니다.이렇게하는게맞는건지모르겠지만 원하는부분투명화가되었습니다. 감사감사

  18. Blog Icon
    DHK

    좋은 강좌 감사드립니다 디자인님.

  19. 도움이 되었다니 다행입니다^^

티스토리 툴바