칵이닷
12.06.28
조회 수 21715
추천 수 17
댓글 18



















요즘 팁 / 노하우 게시판에 odex를 deodex 해서 테마를 수정하는 방법들이 많이 소개되고 있습니다.

Hax빙글님의 "퀵패널에 모바일 데이터 버튼 추가" 같은 글들이 예입니다.

 

이 따라하기는 에테리스님의 "odex / deodex 강좌! (punlog님외 요청)"와 같은 내용이지만, 

많은 분들이 SystemUI의 deodex와 이것을 다시 odex 하는데 어려움을 겪고 있어서 

직접 SystemUI.odex를 가지고 퀵패널에 모바일 데이터 버튼 추가를 하는 과정을 설명해보려고 합니다.

필요한 환경
Java
android SDK(adb shell)
busybox 설치된 루팅된 폰


 1. 우선 작업의 편의성을 위해 작업폴더에 필요 파일들을 복사하겠습니다.
펌웨어: SystemUI.apk, SystemUI.odex, framework 폴더 전체
툴: smali.jar, baksmali.jar, dexopt-wrapper

작업의 편의성을 위해 툴과 참조파일은 "_"를 붙였습니다. 다음의 명령문에서 명령문을 보실 때, 이 점 참고하시면서 보시면 됩니다.
저의 작업 폴더는 G:GalaxyS2workplace 입니다.

2. deodex
SystemUI.odex를 수정하기 위해 풀어주는 과정입니다.



java
-jar _baksmali.jar -a 15 -d _framework -c core.jar:fr
amework.jar:ext.jar:services.jar:framework2.jar:core-junit.jar:minimode.jar
-x S
ystemUI.odex
-o SystemUI

길지만 띄어쓰기로 구분된 한 줄입니다. 한꺼번에 입력 후 엔터 치세요.

SystemUI.odex deodex는 제가 전에 글을 쓴 적이 있습니다.

"UC21의 SystemUI.odex deodex 하기"


3. smali 수정

수정하고 싶은 소스를 참고하여 수정해줍니다.




4. smali-> dex 만들기
smali 파일을 odex로 만들기 전에 중간 과정으로 dex 파일을 생성해줍니다.


java -jar
_smali.jar -a 15 SystemUI -o classes.dex


생성되는 파일명은 꼭 classes.dex 이어야 합니다. 시스템 어플이 아닌 안드로이드 기본 어플을 압축프로그램으로 열어보시면 classes.dex 라는 파일이 꼭 있습니다. 
쉽게 말하면 odex는 이 classes.dex 파일을 apk 밖으로 꺼내놓으면서 폰에 최적화시켜 성능 향상을 꾀하는 방법입니다.

5. SystemUI.apk에 classes.dex 추가하기
deodex 파일이 꼭 필요한 건 아닙니다. deodex파일이라는 것이 odex를 dex로 만들어서 apk에 넣어준 것이기 때문에 따로 만들 필요는 없습니다. deodex가 안된 롬에서 바로 꺼낸 SystemUI.apk에 classes.dex를 압축률 최대로 넣어줍니다.



6. odex 파일을 만들어 줄 dexopt-wrapper를 폰에 넣어줍니다.
떡님의 글대로 framework에 넣어줬습니다. (이 파일 넣는 경로는 상관 없습니다. 나중에 있는 곳만 알면 됩니다.)


adb push dexopt-wrapper /system/framework


그리고 이 파일의 퍼미션을 777로 변경해줍니다.

adb
shell chmod 777 /system/framework/dexopt-wrapper


7. SystemUI는 상단바와 퀵패널로 폰에 중요한 파일입니다. 안전한 파일 교체를 위해 폰을 잠시 정지시켜줍니다.


adb
shell stop

8-1. SystemUI.apk optimize 하기(추가됨)
이 과정은 apk 파일을 4바이트(32bit)씩 정렬해주는 작업입니다. 
장치에서 파일의 읽기 성능이 향상된다고 합니다.
SystemUI.apk의 이름을 변경해줍니다.  여기서는 끝에 "_2"를 붙여줬습니다.
zipalign -v 4 SystemUI_2.apk SystemUI.apk 
SystemUI.apk가 새로 생성되었습니다.
zipalign이 실행되지 않으면 android-sdk 설치한 폴더의 tools 폴더를 환경변수에 추가해주세요.

8-2. SystemUI.apk 투척하기
위에서 classes.dex 파일을 넣어준 SystemUI.apk를 있어야 할 위치에 넣어줍니다.
SystemUI.apk는 /system/app 에 위치합니다.


adb push
SystemUI.apk /system/app



9. adb shll로 들어가기 & 임시 odex 파일 만들기

em/a.odex
$BOOTCLASSPATH

길지만 띄어쓰기로 띄어진 한 줄입니다. 한꺼번에 입력하시고 엔터치세요.
위에서 dexopt-wrapper을 넣은 위치를 잘 생각하세요. 
그럼 다음과 같이 success를 보실 수 있습니다.





10. busybox 이용한 추가 명령어


busybox dd if=/system/app/SystemUI.odex of=/system/a.odex bs=1 count=20
skip=52 seek=52 conv=notrunc

길지만 띄어쓰기로 띄어진 한 줄입니다. 한꺼번에 입력하시고 엔터치세요. 
웹페이지에서 c o n v = n o t r u n c 가 
cnotrunc 로 보이네요...복사하실 때 유의하세요.

이 명령어가 성공하면 다음과 같은 화면을 보실 수 있습니다. 실패하면 폰에 설치된 busybox 버전의 문제입니다.



11. 만들어진 odex를 있어야 할 곳으로 투척


mv
/system/a.odex /system/app/SystemUI.odex

SystemUI.odex가 있어야 할 곳으로 보내줍니다.

12. 전에 투척한 SystemUI.apk의 퍼미션 설정을 빼먹었기 때문에 해줍니다.



13. 재부팅
odex 파일을 수정하였기 때문에 달빅 캐쉬도 수정되어야 하므로 재부팅 해줍니다.


reboot

위에서 길고 어렵게 친 줄이 밑의 한 화면입니다.




14. 재부팅 후 화면
잘 적용 되었네요! (상단바 H는 smali 수정하면서 같이 하였습니다.)




원본 SystemUI.apk를 투척하였기 때문에 제 테마 수정된 SystemUI.apk를 넣어줬습니다.




ps. 
odex 수정하는데 벽에 부딪친 디자인님의 쪽지를 보고 그만 잠깐 써볼까 했던 글이...
실제 작업 시간: 5분
스샷 캡쳐 시간: 10분
글 쓰기(&사진 업로드): 1시간 ;;; chrome에서 글 등록이나 사진 등록이 힘들어요 ㅠ
ps2. smali 1.3.3 버전이 올라왔네요.
Extra Form
첨부
dexopt-wrapper    [File Size:5.4KB/Download:168]
Screenshot_2012-06-28-10-20-30.png    [File Size:228.3KB/Download:13]
Screenshot_2012-06-28-10-18-08.png    [File Size:75.9KB/Download:0]
17.png    [File Size:44.0KB/Download:0]
16_reboot.png    [File Size:479Bytes/Download:1]
15_chmod.png    [File Size:1006Bytes/Download:2]
14_mv.png    [File Size:1.1KB/Download:2]
13_12-result.png    [File Size:3.0KB/Download:1]
12_busybox.png    [File Size:2.0KB/Download:2]
11-10result.png    [File Size:4.1KB/Download:1]
10_adbshell.png    [File Size:2.7KB/Download:1]
9_adb_push_systemui.png    [File Size:1.9KB/Download:2]
6_zip.png    [File Size:139.6KB/Download:1]
7_push-dexopt-wrapper.png    [File Size:3.8KB/Download:1]
8_adb-shell-stop.png    [File Size:1023Bytes/Download:1]
4_edit-smali.png    [File Size:156.3KB/Download:2]
5_smali.png    [File Size:51.9KB/Download:1]
3_baksmali.png    [File Size:22.9KB/Download:1]
1.png    [File Size:127.7KB/Download:1]
2.png    [File Size:5.9KB/Download:2]
댓글 18
  • ?
    Azdesign : F★
    12.06.28
    칵이닷님 자료정리 너무깔끔하고 이해가 쏙쏙 갑니다. 이 강좌를 조금만 더 일찍알았더라면..ㅜㅜ
    제가 참 많이 돌아왔었네요.. 이내용을 알기위해 참 오랜시간이 걸렸던거 같습니다.^^
    지금 갤노트 SystemUI.odex 토글 밝기수정 phyb 님 갤투자료보고 아무리 수정하려고해도.. 넘버링이 문제인지 잘못선언해서인지..
    리무팅되면.. SystemUI이가 강종되네요.. 아무래도 갤투와 갤노트와는 조금 틀린거 같습니다. 
    조금틀린걸.. 수정하기에는.. 제 내공이 많이 모자란거 같고요~~~ 그래도 그동안 주섬주섬 얻은 내용이
    이한페이지에 다 정리되어있어서 너무 좋네요~~ 감사합니다.^^ 사실 SystemUI  Deodex이 안되서 칵이닷님강좌보고 Deodex했었어요^^
  • ?
    Azdesign : F★
    12.06.28
    "odex 수정하는데 벽에 부딪친 디자인님의 쪽지를 보고 그만 잠깐 써볼까 했던 글이..." 이글보고.. 깜짝 놀랬습니다.ㅜㅜ 제가 뭐라고 감사의 말씀을 드려야할지 모르겠습니다. 칵이닷님 이자료하나로.. 정말 많은 유저분께서(저포함) 고마와하게 될꺼 같습니다. 사실.. 언어쪽은 전혀 몰라서 xml자료는 어느정도 있어서 따라하는데..Odex라는 놈의 개념잡는대도.. 상단한 시간이 걸렸던거 같습니다. 정말 짧은 쪽지하나에.. 이렇게 까지 신경써주셔서 정말 감사합니다. 제가 앞으로 어떠한 도움을 드릴 수 있을지 모르겠지만 언제든지 연락주세요^^
  • ?
    에테리스
    12.06.28
    오오 멋지네요..^^

    저 죄송하지만.. 퀵패널 하단에 통신사 문구나 전화번호 등은 어떻게 넣는건가요? ^^:;
  • ?
    미라클_S
    12.06.28
    정말 수고하셨습니다
    많은 분들이 도움이 되실듯하네요
  • ?
    Hax빙글
    12.06.28
    모르시는 분들이 따라하기 쉽게 스크린샷까지 하나하나 쓰시다니 수고하셨습니다! 많은 분들께(제 친구 포함) 정말 도움이 많이 될 것 같네요ㅋㅋ
  • ?
    오르
    12.06.28
    정말 좋은 자료 감사합니다. 반짝 반짝 빛이나는거 같아요~ ^^*
  • ?
    내안의달
    12.06.29
    칵이닷님 자료보고 처음으로 odex<->deodex 작업을 해보게 되었고 성공하게 되었네요!!
    감사합니다
  • ?
    phyb
    12.06.29
    정말 수고많으셨습니다 ^^ 깔끔하게 정리해주셔서 누구나 쉽게해볼 수 있을것같습니다~! baksmali smali과정이 조금 번거롭다 생각되시는 분들께 팁을 드리자면 디오덱스된 apk파일을 apk manager로 디컴파일하셔도 smali 편집이 가능합니다 디컴파일시 원래나오는것 외에 smali라는 폴더가 하나 더생깁니다 안에 smali파일들이 들어있구요 편집 후 컴파일하시고 마찬가지로 오덱스화 하시면됩니다~
  • ?
    activesync
    12.06.30
    smali 수정하려고하는데 어떤 프로그램으로 열어야 하나요???
  • ?
    황테마사
    12.06.30
    정말감사합니다 ㅎ 저도 첨으로 성공햇는데... 문제는 U+갤투라.. 유심인식이안됀다고 ㅜㅜ 눌러도 아무반응이없고 SIM뭐시기 만뜨네요 ㅋㅋㅋ 에라이 ㅠㅠ 근데 android.policy.jar는 뭘로 해야할까요? 종료트윅넣어보려하는데..
  • ?
    쭈니짱
    12.07.01
    덕분에 오덱스변환 오류 해결했습니다 감사요
  • ?
    Cheesse
    12.07.04
    Error occured at code address 8
    code_item @0x7f48 이 나오는데 어떻게 하죠
  • ?
    돼지나라2
    12.07.29

    칵이닷님 어떤테마쓰시나요???

    테마가 되게 마음에 드네요ㅎㅎ

    덕분에 갤투상단바에 쓰리지아이콘 넣었어요감사합니다ㅎㅎ

  • ?
    cheer
    12.07.31

    U+갤치디 드디어 비교분석해서 찾아내고 말았습니다 ㅠㅠ

    흙 감사해요 덕분에 성공했습니다

  • ?
    ojsung7
    12.08.12
    unable to access jarfile _backsmali.jar 이라고 나오네요 어떻게하죠??
  • profile
    Kahn.
    12.08.18

     

    음... 이런 에러가 뜨는데 어떻게 해결하는지 아시나요?

    UH07 SystemUI 작업하려는데 이러네요;;

  • ?
    소이트
    12.09.02
    똑같이 하는데 계속 강종되네요...
  • ?
    qwsdqj127
    22.10.18
    rewqr

댓글 쓰기 권한이 없습니다.
1