1. 우선 작업의 편의성을 위해 작업폴더에 필요 파일들을 복사하겠습니다.
작업의 편의성을 위해 툴과 참조파일은 "_"를 붙였습니다. 다음의 명령문에서 명령문을 보실 때, 이 점 참고하시면서 보시면 됩니다.
2. deodex
java
-jar _baksmali.jar -a 15 -d _framework -c core.jar:framework.jar:ext.jar:services.jar:framework2.jar:core-junit.jar:minimode.jar
-x SystemUI.odex
-o SystemUI
길지만 띄어쓰기로 구분된 한 줄입니다. 한꺼번에 입력 후 엔터 치세요.
SystemUI.odex deodex는 제가 전에 글을 쓴 적이 있습니다.
"UC21의 SystemUI.odex deodex 하기"
3. smali 수정
수정하고 싶은 소스를 참고하여 수정해줍니다.
4. smali-> dex 만들기
java -jar
_smali.jar -a 15 SystemUI -o classes.dex
생성되는 파일명은 꼭 classes.dex 이어야 합니다. 시스템 어플이 아닌 안드로이드 기본 어플을 압축프로그램으로 열어보시면 classes.dex 라는 파일이 꼭 있습니다.
5. SystemUI.apk에 classes.dex 추가하기
6. odex 파일을 만들어 줄 dexopt-wrapper를 폰에 넣어줍니다.
adb push dexopt-wrapper /system/framework
그리고 이 파일의 퍼미션을 777로 변경해줍니다.
adb
shell chmod 777 /system/framework/dexopt-wrapper
adb
shell stop
8-2. SystemUI.apk 투척하기
위에서 classes.dex 파일을 넣어준 SystemUI.apk를 있어야 할 위치에 넣어줍니다.
adb push
SystemUI.apk /system/app
9. adb shll로 들어가기 & 임시 odex 파일 만들기
em/a.odex
$BOOTCLASSPATH
그럼 다음과 같이 success를 보실 수 있습니다.
10. busybox 이용한 추가 명령어
busybox dd if=/system/app/SystemUI.odex of=/system/a.odex bs=1 count=20
skip=52 seek=52 conv=notrunc
cnotrunc 로 보이네요...복사하실 때 유의하세요.
이 명령어가 성공하면 다음과 같은 화면을 보실 수 있습니다. 실패하면 폰에 설치된 busybox 버전의 문제입니다.
11. 만들어진 odex를 있어야 할 곳으로 투척
mv
/system/a.odex /system/app/SystemUI.odex
SystemUI.odex가 있어야 할 곳으로 보내줍니다.
12. 전에 투척한 SystemUI.apk의 퍼미션 설정을 빼먹었기 때문에 해줍니다.
13. 재부팅
reboot
위에서 길고 어렵게 친 줄이 밑의 한 화면입니다.
14. 재부팅 후 화면
원본 SystemUI.apk를 투척하였기 때문에 제 테마 수정된 SystemUI.apk를 넣어줬습니다.