끝으로 외쳐봅니다. "옵큐 만세~" & "Hell쥐&쥐박이 Go To The Hell!"
안녕하세요~ㅋㅋㅋ
개학이 얼마 남지 않은 잉여 1人입니다 ㅋㅋㅋ
요즘에 '레챠'님 덕분에 태스커질도 열심히(요즘은 겜하느라....흥흥) 하고 있었어요 ㅋㅋ
근데 얼마 전에 '랄라'님 테마 게시글 댓글 중에서 부팅 메뉴에 재부팅 넣기와 관련해서 열띤 논의를 벌이시는 것을 보고 저도 한번 넣어보고 싶다 라고 생각해서 이렇게 넣어보게 됬어용ㅋㅋ
'그냥 테마 능력자님들 테마를 덮어씌우면 되지 귀찮게 왜 직접 하느냐' 하시는 분들도 계실 텐데용 ㅋㅋ
그래도 이렇게 직접 스스로 하면 나중에 테마 수정할 때도 좋구요~ 다른 분 테마 덮어씌울 때도 편하구, 재부팅 메뉴 없는 분 테마에도 직접 재부팅 메뉴를 넣을 수 있겠죵!!
사실 저도 다른 분들 게시글을 보고 참조한 거라서 뭔가 좀 찔리긴 하지만.... 아직 옵큐용 강좌가 없는 것 같아서 이렇게 쓰게 되었어요. 지금도 혹시나 문제가 생길지 좀 무섭네요;;
준비물
framework-res.apk
framework.jar
android.policy.jar 이 3가지 파일들은 꼭 백업해주시구요~
재부팅과 리커버리로 쓸 아이콘
apkmanager(apk-manager-4.9.rar 첨부)
java 설치
baksmali & smali (tools.rar 첨부)
아크로에딧등 텍스트 수정 프로그램
작업은 framework.jar를 제외하고 순정에서 작업을 했어요.
위 파일은 제가 순정이 없어서...ㅜ.ㅜㅜㅜㅜㅜ
내용은 http://matpclub.com/s/?document_srl=1269134
에서 참조를 했답니다~
왠지 무단으로 참조 하는 것 같아 뭔가 불안하네용;;
문제 생기면 삭제할께요!! 저도 다시 직접 하고 글 쓰느라 힘들었어용ㅜ.ㅜㅜㅜ
------------------------------------------------------------------------------------
☆ 하시기 전에 리커버리로 꼭 백업을 해주세요!!
벽돌이 될 가능성이 높기 때문이에요!! 꼭이에요~약속!!
1. 제일 먼저 루트탐색기로 들어가서 /system/framework/로 들어가서 framework-res.apk & framework.jar & android.policy.jar을 복사하신 후에 sdcard 적당한 곳에 붙여넣기 해주세요.
2. 첨부된 apkmanager를 적당한 곳에 압축을 풀어주세요. 이걸로 apk 파일을 수정시킬수 있답니다. 이번에는 이걸로 framework-res.apk 을 수정시켜서 재부팅, 리커버리 항목을 만들꺼에요. 저는 c드라이브 최상위에 풀었답니다.
3. java를 깔아주세요.
http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
설치방법은 http://blog.naver.com/meanless44/130108228576 에 가시면 자세히 나와있으니 참조하셔요! (이렇게 남의 분 블로그를 직접 링크해도 되는지 궁금하네요..ㅜ.ㅜㅜㅜ 문제생기진 않을까요? 문제 생기면 자삭 할께요..)
4. 컴퓨터와 연결하시구 난 다음, 각자 apkmanager 압축을 푼 곳에 있는 place-apk-here-for-modding 폴더에 framework-res.apk 파일을 넣어주세요. 그런 다음에 script를 실행하시고
22-1-9 를 각각 눌러주신 다음에 project 폴더로 들어가주세요.
5. res\values로 들어가신 후에 strings.xml 파일을 열어주세요. 메모장도 좋고 워드패드도 좋고 아크로 에딧도 좋아요. 솔직히 저는 처음에는 메모장으로 했다가 지금은 아크로 에딧을 썻어요.
6. strings 최하단에 있는 </resources> 위에 이렇게 적어넣어 주세요.
<string name="reboot">Reboot</string>
<string name="reboot_recovery">Recovery</string>
다 쓰셨으면 저장해주세요.
7. 이젠 한글로 써야 겠죠. res\values-ko 로 가주신 다음에 역시 strings.xml 를 열어주세요. 저는 역시 아크로에딧으로 열었답니다. 6번과 같이 맨아래에 </resources> 바로 위에 적어주세요.
<string name="reboot">재부팅</string>
<string name="reboot_recovery">리커버리 모드</string>
역시 다 쓰셨으면 저장해주세요.
8. 이제 그림 파일이 필요해요. 각자 맘에 드는 png 파일을 구하신 후에 해상도를 48x48 로 맞춰주신 후(반드시일 필요는 없는 것 같은데... 잘모르겠지만 48x48을 추천해요^^)
재부팅은 reboot.png 으로, 리커버리 모드는 recovery.png 로 바꿔주신 후에,
\res\drawable-hdpi 에 넣어주세요.
9. 자, 이제 다시 script로 돌아오셔서 11 을 눌러서 compile을 해주세요. 정상적으로 하셨다면
~the log <option21>
에러가 뜨지 않고 정상적으로 컴파일 되실 거에요. 뭔가 물어보면 n 을 눌러주세요.
위 에러가 뜨는 이유는 상당히 많기 때문에 저도 왜 정확히 왜 뜨는지는 잘 모르겠답니다ㅠ.ㅜㅜㅜ
10. 다시 place-apk-here-for-modding 로 가보시면 framework-res.apk 말고도 unsignedframework-res.apk이 생기셨을 거에요.
각자 apk 파일들을 각각 7zip으로 열어주세요.
위 그림처럼 각각 여시구 unsignedframework-res.apk의 resource.arsc을 framework-res.apk로 드래그 하신 후에, unsignedframework-res.apk\res\drawable-hdpi\ 에 들어있는 reboot.png와 recovery.png 파일을 framework-res.apk\res\drawable-hdpi\에 드래그 하시면 됩니다~
10. 이것으로 첫번째 파일인 framework-res.apk 파일 수정이 끝났어요.
꼭 이번 경우만이 아니더라도, framework-res.apk 테마 수정의 경우에는 이런 식으로 png 파일만 바꿈으로써 테마 수정이 가능하답니다~(상단바 같은 경우에는 lge-res.apk 파일 수정도 필요해요)
------------------------------------------------------------------------------------
두번째 framework.jar과 android.polish.jar 파일 수정은 아주 약간?? 까다롭답니다^^;; 그래도 충분히 할수 있을 정도이니 잘 따라와주세요!!
1. 위에 첨부한 baksmali & smali 파일(압축 파일 tools.rar)을 아무 곳이나 풀어주세요. 저는 역시 c드라이브에 풀었답니다. 그런 다음에 framework.jar과 android.policy.jar 파일을 위에 압축을 푼 장소에 넣어주세요.
2. 실행-cmd 를 쳐서 넣으신 후에 해당 압축을 푼 경로로 cd 명령어를 통해 이동을 해줍니다. 저같은 경우에는 C:\android-sdk-windows\tools\tools 에다 풀었기 때문에
C:\Users\Computer> cd C:\android-sdk-windows\tools\tools
라고 초록색 부분을 입력해주시면 해당 경로로 이동이 됩니다. (cd 다음에 해당 압축을 푼 곳의 장소를 입력해주셔야해요. 저랑 같은 경로를 입력하시면 안되요!!>_<)
3. cmd 창에서 각각
java -jar baksmali.jar -x android.policy.jar -o android.policy
java -jar baksmali.jar -x framework.jar -o framework
이라고 입력을 해주세요.
한꺼번에 쓰지 마시구 각각이에요. 위에꺼 입력 후에, 다 되면 아래꺼 입력하시면 되요.ㅋㅋ 아! 쓰지 마시구 복사-붙여넣기 하셔도 돼요. 참고로 cmd 에서 ctrl-v가 안먹히니까 마우스 오른쪽 버튼 누르시고 붙여넣기 해주세요~ (cmd 창은 아직 끄지 말아주세요^^)
4. 해당 폴더 안에 framework와 android.policy 폴더가 생기신게 보이시나요?
일단 먼저 framework.jar 부터 수정해볼께요. 새로 생긴 framework 폴더로 들어가주세요. com\android\internal\app 로 들어가시면 ShutdownThread.smali 이 있어요. 아크로 에딧으로 열어보아요♡ㅋㅋㅋ
5. # static fields 맨 아래, 즉 # instance fields 바로 위쪽에
.field public static mRebootMenu:I
라고 입력을 해주세요.
5. 아직 창 닫지 마시구요~ 이 창에서 바로 찾기 기능(컨트롤+f)을 이용하여
invoke-static {}, Landroid/os/Power;->shutdown()V
을 찾아주세요. 찾으셨으면 그 위에
sget v1, Lcom/android/internal/app/ShutdownThread;->mRebootMenu:I
const/4 v2, 0x1
if-eq v1, v2, :reboot
const/4 v2, 0x2
if-eq v1, v2, :rebootRecovery
를 써넣어 주세요.
7. 그리고 아래 바로 아래 return-boid가 보이시나요? 바로 아래 이렇게 입력해주세요.
:reboot
const-string v4, "now"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
:rebootRecovery
const-string v4, "recovery"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
흠~ 순정도 이런지 잘 모르겠지만 제껀 invoke-static {}, Landroid/os/Power;->shutdown()V 가 두개가 검색되네요~?? 참고로 말씀드리지만 제 framework.jar는 순정이 아니거든요 ㅠ.ㅜㅜㅜㅜ 저는 그냥 검색되는 둘다 수정을 해줬답니다. 저게 2개가 나오시는 분들은 두개다 6, 7번 작업을 해주세요.
--------------------
PlaRis 님께서 두개중에 위에꺼만 수정시키면 된다고 하시네요~
감사합니다 PlaRis님~!!
8. 저장을 해주세요. 저장을 하신 후에는 cmd 창에서(아직 안 끄셨죠?)
java -jar smali.jar -o classes.dex framework
라고 쳐주세요. 조금 기다리시면 classes.dex 파일이 생기셨을꺼에요. framework.jar 파일을 7zip으로 여셔서 classes.dex 를 framework.jar 속으로 드래그 해주세요. 그럼 파일이 교체된답니다^^
자, 다음에는 마지믹으로 android.policy.jar를 수정하러 가볼까요^^
------------------------------------------------------------------------------------
1. android.policy 폴더로 들어가주세요. 길이 외길이라 쭉쭉 들어가볼까요 ㅋ마지막 폴더가 impl 폴더네요. 들어가주세요.
2. GlobalActions$3.smali 파일을 주목해주세요~ 이 파일을 두번 복사 붙여넣기 해주세요.
그리고 각각 이름을 GlobalActions$7.smali 과 GlobalActions$8.smali 으로 고쳐주세요.
3. 아래 GlobalActions.smali 파일을 역시 아크로에딧(등 기타 텍스트 편집 프로그램)으로 열어주세요. GlobalActions$Action과 헛갈리시면 안돼요 ㅋㅋ저도 처음에 헛갈렸답니다 ㅋㅋ
4. 다 여셨나요? 그럼
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
을 검색해주세요. 그럼 바로 위에 const/4 v0, 0x3 라고 적혔을텐데 이것을 const/4 v0, 0x5 로 고쳐주세요.
5. 아직 창 닫지 마시구요~
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$3;
를 검색해주세요. 그러면 약간 아래에 aput-object v2, v0, v1 라고 쓰여진 줄이 있어요. 바로 아래에 이렇게 입력을 해주세요.
(파란색 한글은 입력하지 말아주세요~)
const/4 v1, 0x3
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;
const v3, 0x1080*** ㅡ 재부팅 drawable id
const v4, 0x1040*** ㅡ 재부팅 string id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x4
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$8;
const v3, 0x1080*** ㅡ 리커버리 drawable id
const v4, 0x1040*** ㅡ 리커버리 string id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$8;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
6. 입력하셨나요? 그럼 잠시 다시 전에 컴파일 했던 framework-res.apk로 돌아갈께요.
다시 apkmanager를 실행시켜 주세요. 22 로 apk 파일을 선택해주세요. unsignedframework-res.apk을 선택하셔서 9(디컴파일)을 해주세요.
그럼 다음에 \res\values 로 가신 다음에 public.xml 파일을 실행시켜 주세요.
7. ㅇㅅㅇ 눈아프네요 ㅋㅋ여기서 우리가 찾아야 되는 id 값은 4개 입니다.
public type="drawable" name="reboot"
public type="drawable" name="recovery"
public type="string" name="reboot_recovery"
public type="string" name="reboot_download"
이렇게 4개 랍니다. 여기서 public type="drawable" name="reboot" 를 검색하면 옆에 id 값이 나와있는데요, 이 값을 위에 "ㅡ재부팅 drawable id" 값에 넣어주세요.
다 하셨으면 당연하게 저장해주세요^^
8. 거의 다 되었습니다~ 좀만 더 힘을 내주시기를 ㅠ.ㅜ
앞서 복사한 GlobalActions$3.smali 사본들 기억하시나요? 지금은 GlobalActions$7.smali, GlobalActions$8.smali 로 이름이 바뀌었지요.
일단 GlobalActions$7.smali로 들어가주세요.
이 문서에서 GlobalActions$3 라고 적힌 모든 것을 GlobalActions$7로 고쳐야 해요. 바꾸기 기능을 이용하면 쉽겠죠?
그런 다음에
invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V
를 검색해주세요. 이 줄 바로 윗줄에
const/4 v2, 0x1
sput v2, Lcom/android/internal/app/ShutdownThread;->mRebootMenu:I
를 입력해주세요.
9. 이와 마찬가지로 GlobalActions$8로 들어가서 GlobalActions$3이라고 적힌 것들을 모두 GlobalActions$8로 고쳐주세요~그리고 GlobalActions$7과 마찬가지로
invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V
를 검색해주세요~그리고 이 줄 바로 위에
const/4 v2, 0x2
sput v2, Lcom/android/internal/app/ShutdownThread;->mRebootMenu:I
를 입력해주신 후에 저장 부탁드릴께요.
10. 이제 거의 끝났습니다 ㅠ.ㅜ
cmd 창에서
java -jar smali.jar -o classes.dex android.policy
를 입력해주세요. 되었나요?
그럼 이 때 생기는 classes.dex 파일을 framework.jar에서 했던 거처럼 android.policy.jar에 넣어주세요.
------------------------------------------------------------------------------------
이제 정말 끝이에요.
수정이 완료된 3가지의 파일
framework-res.apk, android.policy.jar, framework.jar
이 파일들을 sdcard로 옮겨주세요.
그 후에 루트익스플로러로 이 파일을 /system 으로 옮겨주세요. 644 퍼미션을 준 후에 /system/framework 에 덮어씌어주세요. 위 3 파일들을 한꺼번에 넣어도 되겠지만 벽돌되도 몰라용ㅋㅋ
하나 넣고 재부팅을 추천합니다 ㅋㅋ
자, 잘 되었나 확인해주세요~
저도 이거 쓰면서 같이 또 해봤는데 정상 작동 하네용~!!
단, jar 파일을 교체하고 나면 오즈 부팅 시간이 상당히 오래걸리네용ㅋㅋㅋ
벽돌인지 아닌지 구분이 ㅋㅋ ㅋㅋ
에궁;; 힘드네요 ㅜ.ㅜㅜㅜ 내 게임할 시간이 ㅋㅋ
http://matpclub.com/s/?document_srl=1269134
을 참조하였구요~ 문제 생기면 자삭하겠습니당....ㅠ.ㅜㅜㅜㅜㅜㅜ
ㅜ.ㅜㅜㅜㅜ벽돌되어도 제가 책임질 수는 없어요ㅠㅠ
반드시 백업 후 작업 하세요~ㅜ.ㅜㅜ
'슬기셈틀' 카테고리의 다른 글
해외폰 국내 인증하기 / 국내 인증 및 개통방법 (0) | 2011.08.23 |
---|---|
[루리웹특집] 셧다운제 기본권 침해, 과연 위헌인가? (0) | 2011.08.22 |
그냥 그렇고 그런 안드로이드 게임 이야기 / 사무라이2 벤젠스, 포켓갓, 레이싱 선더, 이터니티 워리어, 폴링 볼, 스카이 오브 글로리, 팔라독 토렌트 (0) | 2011.08.22 |
웹사이트를 통째로 컴퓨터에 담기 (HTTRACK) (2) | 2011.08.20 |