http://matcl.com/s/?document_srl=1302873

위 글에 결과물을 올려놓았으니(6메뉴가 아니라 7메뉴지만요) 이걸로 작업하시면 되겠습니다.

framework-res.apk만 수정하시고 android.policy.jar이랑 framework.jar과 함께 배포하시면 됩니다.


먼저 이 글은 http://forum.xda-developers.com/showthread.php?t=811532 요 앞의 링크 내용을 참조하여 만들었음을 알립니다.


먼저.. framework-res.apk를 수정하셔야합니다.

수정하실때는 apk manager이나 apktool에서 Decompile을 사용하시면 되구요, 굳이 제가 하는걸 그대로 따라하실 필요는 없고 테마 제작자분께서평소에 테마 제작하실때랑 똑같은 방식으로 하시면 됩니다.


res/values/strings.xml 마지막에 (보단 앞에) 아래 문구를 추가합니다.


Reboot

Recovery

Download


그리고 res/values-ko/strings.xml 마지막에 아래 문구를 추가합니다.(위와 똑같은 방식으로)


재부팅

리커버리 모드

다운로드 모드


눈치채셨겠지만 이 부분은 위 영어의 한글번역입니다.

이제 strings는 추가가 완료되었고.. 메뉴 앞에 나오는 아이콘을 넣을 차례입니다.

res/drawable-hdpi 폴더에 powermenu.zip <-- 요걸 받으셔서 압축 푸신 후 이미지를 넣어주세요.(테마 제작자분께서 직접 만드신 이미지를 넣으셔도 상관 없습니다. 크기는 대략 48*48에서 72*72 사이쯤이면 적당할듯합니다....)


이제 strings랑 drawable은 추가가 완료되었으니 베터리 1%단위 만드실때 정말 힘들고 지긋지긋하셨을거같은 public.xml을 고칠 차례입니다(-_-;;)


res/values/public.xml을 여셔서 아래 여섯줄을 추가하시고 베터리 수정하실때처럼 id="0x010?????" 부분을 적당히 수정해주세요.



이건 그냥 지금은 컴파일하신 후에 unsignedframework-res.apk를 다시 디컴파일해서 res/value/public.xml 열어서 저 뒤에 id="" 부분만 확인해두시면 됩니다. (해모수님의 제보 감사합니다)

이제 framework-res.apk를 다시 컴파일하신 후 unsignedframework-res.apk에서 resource.arsc등을 포함한 수정된 파일들을 원래 framework-res.apk로 옮기세요.

이걸로 framework-res.apk부분은 완료되었습니다.


이번엔 프레임워크의 .jar파일들을 수정해보죠.


갤스 내의 /system/framework/ 폴더 내의 android.policy.jar과 framework.jar을 꺼내줍니다.


bakssmmaallii.zip<---요 파일을 받으셔서 한가한 폴더에 압축을 풀어주고, 거기에 android.policy.jar과 framework.jar을 같이 넣어주세요.

그리고 cmd를 켜서 그 폴더로 이동하신 후 다음 두줄의 명령어를 입력하세요.(JRE는 이미 깔려있으실거라 믿어요 ㅠ_ㅠ)


java -jar baksmali.jar -x android.policy.jar -o android.policy

java -jar baksmali.jar -x framework.jar -o framework


이렇게 하면 그 한가한 폴더에 framework이랑 android.policy폴더가 생깁니다.(Khiz님의 제보로 명령어 수정했습니다 ㅠㅠ)


framework폴더를 들어가봅니다.

comandroidinternalapp폴더까지 가보시면 ShutdownThread.smali파일이 있죠?

그걸 워드패드나 Acroedit으로 열어줍니다. (메모장은 비추..)

맨위에서 좀 내려오면 # static fields 이런게 있고 아래로 쭉 목록이 있는게 보이실겁니다.

그 목록 맨 끝에 (그러니까 # instance fields 시작하기 전에) 다음 한줄을 추가합니다.


.field public static mRebootMenu:I


이제 " 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

const/4 v2, 0x3

if-eq v1, v2, :rebootDownload


그리고 " invoke-static {}, Landroid/os/Power;->shutdown()V " 검색하셨던거 아래 보면 " return-void "가 보일겁니다. 바로 아래요. 그 return-void 다음줄부터 아래의 내용을 추가해주세요.


: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

:rebootDownload

const-string v4, "download"

invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V


return-void


이제 아까 그 cmd창에서 다음 명령어를 입력하세요.


java -jar smali.jar -o classes.dex framework


그럼 조금 있다가 classes.dex 파일이 나옵니다.

WinRAR등으로 framework.jar을 여신 후에 classes.dex을 끌어다 넣으면 됩니다.

여기까지 하시면 framework.jar 수정은 끝난겁니다. 이제 android.policy.jar을 수정해보도록 하죠.

아까 그 한산한 폴더에 android.policy폴더를 들어가봅시다.

쭉~ 폴더가 하나씩밖에 없을테니 계속 들어가서 impl폴더까지 들어갑니다.

거기 보면 GlobalActions$5.smali 파일이 있지요? 그걸 복사해서 붙여넣기.. 붙여넣기.. 붙여넣기.. 이렇게 세번 하면 사본이 세개 나옵니다.

그렇게 나온 사본들의 이름을 각각 GlobalActions$9.smali, GlobalActions$10.smali, GlobalActions$11.smali로 이름을 바꿔줍니다.

이제 GlobalActions.smali파일을 수정해야하니 워드패드나 Acroedit등으로 열어주세요.



" new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action; "를 검색하신 후 그 약간 위에 있는 " const/4 v0, 0x3 "에서 0x3을 0x6으로 바꿔주세요.


이제 " new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$5; "를 찾아보시면 그 아래쪽에 aput-object v2, v0, v1 이라는 줄이 나옵니다.

그 다음줄부터 아래 내용을 추가해주세요.


const/4 v1, 0x3


new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$9;


const v3, 0x1080*** # reboot icon resource id


const v4, 0x1040*** # reboot string resource id


invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$9;->(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$10;


const v3, 0x1080*** # recovery icon resource id


const v4, 0x1040*** # recovery string resource id


invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$10;->(Lcom/android/internal/policy/impl/GlobalActions;II)V


aput-object v2, v0, v1


const/4 v1, 0x5


new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;


const v3, 0x1080*** # download icon resource id


const v4, 0x1040*** # download string resource id


invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$11;->(Lcom/android/internal/policy/impl/GlobalActions;II)V


aput-object v2, v0, v1


이부분 오타 수정했습니다 ㅠㅠㅠㅠㅠ

저기 resource id라고 되있는 부분 앞에 0x10?????에는 아까 public.xml에서 적절하게 넣어줬던 id="0x010?????"부분에 넣어줬던거(id=에서는 0x0으로 시작하지만 뒤의 0은 여기선 생략해도 되는겁니다) 적절하게 집어넣어주세요.

예를들어 아래처럼 넣었다고 하면...(어디까지나 예시입니다. 무조건 이렇게 숫자 적당히 넣으면 framework-res.apk 컴파일할때 오류떠요.)

저기 resource id라고 되있는 부분 앞에 0x10으로 시작하는 숫자 부분은 아까 컴파일해서 나온 unsignedframework-res.apk를 다시 디컴파일하면 res/value/public.xml에 있는 내용중에.. string과 drawable을 잘 보시고 아래같은 부분을 찾아셔서 숫자를 넣어주세요.

예를들자면...


.......

.......

......


.... 이렇게 되있다면 저기 아래 resource id 앞의 숫자 부분에는 이런식으로 넣어주시면 되겠지요.


....

const v3, 0x10805a1 # reboot icon resource id

const v4, 0x10405f1 # reboot string resource id

....

const v3, 0x10805a2 # recovery icon resource id

const v4, 0x10405f2 # recovery string resource id

....

const v3, 0x10805a3 # download icon resource id

const v4, 0x10405f3 # download string resource id

....


대충 아셨으리라 생각하고 다음으로 넘어가서..

아까 GlobalActions$5.smali 사본 세개 만들어놨었잖아요?

그거 여셔서 "GlobalActions$5"를 찾아바꾸기로 전부 사본들 이름에 맞는거로 5를 바꿔줍니다.

그리고.. 각각 파일에서 " invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V "를 검색하신 뒤에.. 각각 파일에 맞게 그 앞줄에 다음 내용을 넣어줍니다.


GlobalActions$9.smali의 경우에는 아래처럼..


const/4 v2, 0x1

sput v2, Lcom/android/internal/app/ShutdownThread;->mRebootMenu:I


GlobalActions$10.smali의 경우는 아래처럼..


const/4 v2, 0x2

sput v2, Lcom/android/internal/app/ShutdownThread;->mRebootMenu:I


GlobalActions$11.smali의 경우는 아래처럼요.(숫자만 바뀝니다)


const/4 v2, 0x3

sput v2, Lcom/android/internal/app/ShutdownThread;->mRebootMenu:I


이제 android.policy.jar도 거의 다 되었습니다.

변경 내용을 다 저장하시고 나서 한산한폴더에 열려있던 cmd창으로 돌아가서 다음 명령어를 입력합니다.


java -jar smali.jar -o classes.dex android.policy


그럼 곧 작업이 끝나고 classes.dex파일이 새로 만들어집니다. 이걸 아까 framework.jar에서 했던것처럼 android.policy.jar에 넣어주세요.


이제 수정된 파일 세개(framework-res.apk, android.policy.jar, framework.jar)를 갤스 내의 /system/framework/ 폴더에 집어넣고 재부팅 한번 하면 완성입니다.

이거 하고 나서 재부팅시에 deODEXed 커스텀롬 처음 올렸을때처럼 시간이 좀 걸립니다. 조금 기다리시면 되요.


이제 이 만들어진 테마를 배포하실때는 글 내용에 이 게시물 주소와 저 위의 xda 주소 두개를 같이 밝혀주시면 고맙겠습니다.. 이게 가장 쉽고 가장 중요한 단계(?)이니 꼭 부탁드려요 ㅋㅋㅋㅋ

댓글 36
  • ?
    IzMyLuv
    11.01.20
    네 알겠습니다^^ 라고 저도 하고 싶네요.. 문과출신 회계공부하는 저로서는 뭔말인지 도통.... 테마 제작자님들 화이팅이요 감사합니다!
  • ?
    정희☆
    11.01.20
    흐음 .. 내일 도전 하겠습니다 .. 콥스키님 .
  • ?
    샤인님
    11.01.20
    으음 숫자를 어떻게 바꿔도 에러가 뜨네요...drawable에 추가되어야 하는 사항은 없나요?
  • ?
    HTC_Kovsky
    11.01.20
    로그를 보시면서 해야합니다. 숫자가 겹친다고 나오면 원래 있던거랑 숫자가 겹쳐서 그렇고.. 심볼 갯수보다 숫자가 더 크다고 나오면 너무 뒤로 이동한거지요. 베터리 drawable 추가할때랑 비슷하게 하시면 됩니다..(public.xml만)
  • ?
    정희☆
    11.01.20
    오늘도 알바가 제껴서 .. 새벽에나 시도할듯 ..
    ㅋㅋㅋㅋ ㅠㅠ
  • ?
    샤인님
    11.01.20
    너무 뒤로 왔다는 건 뭔가요????? 숫자가 너무 커서 그런건가요?
  • ?
    Khiz
    11.01.20
    콥스키님 혹시 이거 디오덱스에서만 작동하나요??
  • ?
    샤인님
    11.01.20
    음 ㅡ,.ㅡ 콥스키님 4a6?을 넘어가면 안되는듯하군영 흑흑 비어있는 숫자 6개만 던져주세여 ㅠ.ㅠ
  • ?
    샤인님
    11.01.20
    odex로 만들 수는 있긴 한데 전 안만들겁니다 deodex가 편하니까요 케케케케
  • ?
    Khiz
    11.01.20
    쩝 완성은 시켰는데 전 오덱스 사용자라 못넣고있........................악ㅠㅠ
  • ?
    HTC_Kovsky
    11.01.20
    비어있는 숫자가 아니라 그냥 마지막 숫자 뒤로 붙인다고 생각하심 됩니다.
    음.. 예를들어 지금 public.xml에 drawable중에 제일 숫자 큰게 0x010805a0이라고 한다면 0x010805a1부터 넣고... 그래야합니다.
    팁을 좀 드리자면 커서를 public.xml 맨 아래에 놓고 검색에서 검색방향을 \"위로\"로 하고 drawable을 찾으시면 아마 마지막 숫자를 가진 drawable이 나오지 않을까싶네요. 이건 무조건 그런건 아니긴 하지만요.
  • ?
    HTC_Kovsky
    11.01.20
    명령어 수정을 좀 했습니다 ㅠㅠ 실수로 -o를 안넣었네요..
  • ?
    샤인님
    11.01.20
    거기까지는 일단 수정완료 했습니다 ^^흐흐흐흐 근데framework.jar가 좀 말썽인듯...ㅠㅠ
  • ?
    해모수
    11.01.20
    public.xml은 따로 수정하는게 아니라 컴파일하면 자동으로 수정되는군요.
    확인 부탁드립니다^^.
  • ?
    HTC_Kovsky
    11.01.20
    어라? 그렇게 되는건가요?!
    그럼 일단 컴파일 하고 나서 다시 디컴파일해서 숫자 뭐로 됬나 확인하고 넣으면 될듯.. 정보 감사합니다 ^^;;
  • ?
    public.xml은 컴파일시 자동으로 수정됩니다^^~
  • ?
    샤인님
    11.01.21
    저거 framework.jar 수정할 때 위에 넣으라는 건 라인 위에 넣으라는 건가요 아니면 라인 밑으로 넣으라는 건가요???찾으라 하신 줄 바로 위에 라인번호가 있어서 헷갈리네요 ㅠㅠ
  • ?
    샤인님
    11.01.21
    음 그러니까 바로윗줄에보면 Line어쩌구가 잇는데... line이랑 그 문구 사이에넣는건가요 아님 line위에넣는건가요??
  • ?
    bvlgari
    11.01.21
    라인 위에 넣어야 됩니다. xda 링크보시면 아래 다운로드링크에 powermenu_final 이란거 다운로드 받아보시면 도움이 되실 듯 합니다..샤인님 성공하세요 ^^
  • ?
    정말 멋지십니다....
  • profile
    NEO™
    11.01.24
    와... 좋은글 추천드립니다. 진작에 이글 봤으면 ㅠㅠ
    다음부턴 맛클 먼저 뒤져봐야겠습니다 ^^
    제가 올린글에 이글 링크 추가해놓겠습니다.
    혹시 오해가 있으실지도 몰라서 한줄 남깁니다.
  • ?
    아아.. 아무리 정독을 해봐도 므르게쓰니다...;; ㅠㅠ
  • ?
    milkis
    11.02.06
    으... 모토로이로 하고있는데.... 다 하고 메뉴불러오면 리부팅 ㅠㅠ 중간에 모토로이랑 좀 안맞는 부분이 있어서 능력것? 바꿨는데 ㅋ
  • ?
    milkis
    11.02.07
    에고 모토로이 성공했네요. 한군데 실수한곳을 못찾아서 헤맸네요 ㅠㅠ 제대로 봤으면 한번에 성공했을텐데 ㅠㅠ 암튼 감사합니다.
  • ?
    hcscp
    11.02.13
    안녕하세요~ 모토로이이용 하면서 테마 만들어보는 중인데요 ㅠㅠ
    모토로이로 성공 하셨다기에 혹시 파일좀 보내주실수 있으신지해서 댓글 달았습니다..
    12시간째 고쳐보고 있는데,,,뭔가 도저히 안되서요;...ㅠㅠ
  • ?
    감사합니다..~^^ 이렇게 열심히 써주신 강좌 덕에... 베가s 한번에 성공 했네요..~^^
  • ?
    진저브레드는 android.policy가 약간 다르군요..ㅠㅠ 거의다 성공했는데!!
  • ?
    쪼옹구
    11.05.29
    좋은 자료 감사합니다 !! 아! 한가지 말씀드릴게요 !! android.policy.jar 파일 수정할때...GlobalActions$3 으로 작업하시면 \"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V\" 이 부분 검색해서 하는 작업을 좀 더 수월하게 하실 수 있어요 ~
  • ?
    invoke-static {}, Landroid/os/Power;->shutdown()V
    여기서 명령어 추가해서 넣을때요
    :reboot
    const-string v4, \"now\"
    invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
    return-void
    위에 :이거 부터 다넣어줘야 하나요?
  • ?
    왜자꾸..컴파일할때 오류뜨지;;이상하네요ㅠㅠㅠ다시해봐야겠어요ㅠㅠ
  • ?
    아낰ヲヲ미쳤나바요ㅠㅠㅠ수정된거갖고 쑈하고있엇어....뭐한거지 여태....;; 순정이어디갓지;;
  • ?
    저도 5에서 찾다가 겔스랑 베가랑 다른가..하다가 3에서 찾앗네요히히..근데 바로위에 const/4 v1, 0x1가있어서.. 이밑으로 넣어야되나 위로넣어야되나...ㅠㅠ 밑으로 넣어봐야겟다;;
  • ?
    const/4 v1, 0x1<요위로 넣어야되요 ㅠㅠㅠ으헝어헝ㅠㅠ 성공해써요!
  • ?
    성공!! 밥시간빼고 무려 세시간만에..ㅠㅠ
  • ?
    샤이렌
    11.08.04
    LG베가x 사용중입니다. 하라는대로 다 했구요. 갤럭시는 aput-object v2, v0, v1 이 문구가 GlobalActions$5번에 있는듯한데 베가에는 3번에 있더라구요. 그래서 3번으로 수정을 했고 컴파일시 오류가 전혀~ 나지 않았습니다. 그런데 종료를 길게 누르면 종료메뉴가 떠야 하는데 아무런 반응도 없고 좀 지나면 화면이 반전색상처럼 변했다가 밝아짐 현상 후 먹통 됐다가 좀 지나서 멀쩡해집니다. 무슨 문제 일까요?
    퍼미션 제대로 확실히 줬구요 파일 한번에 안하고 세번 나눠서 재부팅 하고 했습니다. 아시는 분은 댓글좀 달아주세요. 쉽게 얻어지는 정보가 아니라는건 알지만 여기저기 문의도 해보고 3번 파일이 아닌 다른 파일로도 수정해보고 했는데도 다 똑같은 현상이 나네요..
  • ?
    익물
    11.10.02
    다작업하고 classes.dex파일을 deodex시킨 policy랑frame에넣는건가요아님 순정에집어넣는건가요?!
댓글 쓰기 권한이 없습니다.
List of Articles
제목 글쓴이 추천 조회 날짜
디자인 [JackoS's 테마제작가이드] chapter I 82 file JackoS 84 57708 2011.02.09
디자인 ★안드로보이버전 리뉴얼버전★V1.1 75 jackos 33065 2010.09.07
디자인 [수정본]SK22 JackoS's THEME_ANDROBOY VER_ODEX 배포 74 file JackoS 1 27193 2010.12.04
디자인 [강좌]디컴파일,컴파일 강좌+갤럭시S3LTE 젤리빈상단바투명 58 file 코에이 57 19412 2013.01.23
디자인 [JackoS's 테마제작가이드] -= PROLOGUE =- 53 JackoS 60 42680 2011.02.09
디자인 SK22 ANDROBOY VER 작업시작! 51 file JackoS 3 43144 2010.12.01
디자인 [갤S] 진저 퀵패널 배경 이미지로 바꾸기~![수정] 48 file JackoS 17 10885 2011.05.20
디자인 [VF24] 상단바 이미지로 표시하기~ 45 file JackoS 24 7369 2011.07.04
디자인 [JackoS's 테마제작가이드] chapter II 43 file JackoS 58 37660 2011.02.10
디자인 [JackoS's 테마제작가이드] chapter IV 40 file JackoS 46 36800 2011.02.14
디자인 [수정]JackoS's Stylish VIOLET THEME 배포 안내 39 file JackoS 13 29845 2010.12.20
디자인 진저브레드 CRT 애니메이션 오픈소스(수정) 39 푸우♡ 23 21238 2011.04.15
디자인 Zooper widget 마스터~~!! (는 개뿔...) updated 11/14 38 file 똘치아빠 8 7498 2014.11.13
디자인 오랜만에 들려보네요~ 이번에 디자인해봤습니다. 37 file 톡탁 30 3347 2014.03.19
디자인 [좀 더 쉽게 수정][테마 제작자분들을 위한] 전원버튼 롱클릭 메뉴에 ... 36 HTC_Kovsky 10 20864 2011.01.19
디자인 KT 갤럭시노트4 IOS8 테마 제작 현황... 35 file 똘치아빠 15 10531 2014.10.24
디자인 디컴, 컴파일 문제없이 해결하기... 35 고도처리 35 13687 2011.05.22
디자인 수정★안드로보이버전 리뉴얼★V1.2 스케치 효과 35 jackos 1 32932 2010.09.12
디자인 부트로고 바꾸기 32 떡  8 21172 2011.02.09
디자인 '해제하려면 화면을 움직이세요' 색상 변경 및 문구 제거 간단팁 32 file fred 32 18792 2011.02.14
디자인 와인버전 진척도 두번째 리폿!. 32 file JackoS 2 26714 2010.11.23
디자인 [JackoS's 테마제작가이드] chapter III 31 JackoS 52 39397 2011.02.11
디자인 Layout XML 속성 정리 30 오르 50 13704 2013.05.15
디자인 [배포예정] Chris Material L for Note4(KT) 30 file 똘치아빠 31 4935 2014.11.28
디자인 [TA13]JackoS's_Stylish_VIOLET_ODEXver 29 file JackoS 11 12531 2011.02.07
1 - 11