여섯번째 강좌입니다.










슬슬지치기 시작합니다.









가끔 이런생각도 듭니다-_-...

처음 안드로이드를 공부하기 시작한건 갤럭시K라서 그랬습니다.

갤럭시S에 비해 퍼져있는 테마도 적고, 정보도 적고, 모임도 적고 그렇지요....

사용자가 많은폰에 비해서 어쩔수 없는건지도 모르지요









저는 아직도 많이 알지 못하지만 열심히 찾아다니면서 공부했습니다.

잘읽었다는 리플이 적다면 그건 제 강좌가 부족한탓입니다.




그래서 이렇게 생각을 고쳐먹었습니다.









제가 알려드리는게 완벽하지 않을수있습니다.

더 좋은방법들이 있을수도 있구요

제가 알려드리는건 수많은계단에 첫계단에 불과할겁니다.

하지만 이 강좌로 인해서 많은 갤럭시K 전용 자료들이 나왔으면 하는 바람입니다.























사설이 길다고 때리지는 마십시요....








(사...살려주세여.......)

-------------------------------------------------------------------------------------
제가 갤럭시K를 언급했지만 다른폰에서도 가능한 강좌입니다.
-------------------------------------------------------------------------------------


수일 동안 검색한 결과와 벽돌을 당해본 경험을 통해 강좌를 써보고자 합니다.

도스시절부터 컴퓨터를 해왔던지라 컴퓨터에 어느정도 감각이 있어서,

하드웨어쪽은 조금 알지만 소프트웨어쪽은 완전히....









프로그래밍은 html말고는 할줄 아는게 전혀 없고, 그래픽쪽은 정말 아는게 하나도 없습니다.

그래픽같은걸 할줄안다면 갤럭시K테마도 만들어서 올리고 했을텐데 말이지요

대신 이강좌로 대신해 그래픽작업에 센스있으신분들이 많이 생겨 갤럭시K용 테마가 더 많이 생겼으면 좋겠습니다.

이번강좌를 전부 숙지하신다면 framework-res.apk파일을 포함한 시스템어플 수정방법을 알게되실겁니다.

여기서는 framework-res 수정방법을 알려드리겠습니다.

framework-res와 다른 시스템어플들 수정방법은 비슷하므로 이강좌만 보시면 어느정도 감이 오실겁니다.

framework-res파일은 쉽게 말해 안드로이드의 뼈대역할을 한다고 보시면됩니다.

사실 수정이라고해봤자 약간의 기능보강과 이미지를 바꿔줌으로써 테마를 바꾸는 정도 입니다.


※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.
※ 주의 : 완벽하게 숙지하지 못하면 벽돌상태를 보실수도 있습니다.





* 준비물

* 루팅된갤럭시K
* 루트 익스플로러(전에 쓴 강좌를 보고 사용법 완벽하게 숙지요망)
* framework-res.apk 파일(아래에서 설명)
* apk manager

* Java SE Development Kit 6u21
- 자신의 운영체제에 맞는걸 받으세요
jdk-6u21-windows-i586.exe (윈도우 32비트 전용)
jdk-6u21-windows-x64.exe (윈도우 64비트 전용)

* 강좌에 사용되는 예제그림파일모음. 출처 : (배터리아이콘 : SHAI님, 안테나아이콘 : ???)


* 알집최신버젼



준비물 설치하는방법과 압축푸는방법같은건 설명하지 않겠습니다.

솔직히 말하자면 프로그램설치하는방법과 압축푸는방법을 모르시는

컴퓨터 사용유저께는 권장하는 작업이 아닐만큼 위험한 작업입니다.

(절대 제가 귀찮아서 그러는건 아닙니.......)











먼저 이번강좌에서 바꾸게 될것은 상단배터리 아이콘과 안테나아이콘을 무지개로 바꿔볼 계획입니다.

apk manager는 다운받아서 한폴더에 압축해제 해두시고

Jave SE Development Kit는 다운받아서 설치하시고

불멸.zip는 다운받아서 압축해제 해주시고

알집도 다운받아서 설치해주시면 됩니다.


이강좌에서는 두가지의 방법을 설명할것입니다.

첫번째는 xml파일을 수정하며 이미지의 갯수 자체를 추가하는방법.

두번째는 이미지를 같은파일이름을 가진 다른이미지로 교체하는방법.



--------------------------------------------------------------------------------------------
첫번째 방법. xml파일을 수정하며 이미지의 갯수 자체를 추가하는방법


먼저 자신의 순정 framework-res.apk파일을 준비해야 합니다.

루트 익스플로러를 이용해서 framework-res.apk파일을 컴퓨터에 복사해줍니다.
(* framework-res파일은 system/framework/ 폴더내에 있습니다.)
(** 이과정도 상세하게 설명하지 않겠습니다. 제가 쓴 이전 강좌를 보면 알수있는데다가
이걸 모르신다면 이 강좌를 따라하면 위험하다고 생각하기에 그렇습니다.)

framework-res.apk파일을 복사해서(절대 잘라내기 하지 마십시오)

아까 압축을 풀어둔 apk manager폴더내에 place-apk-here-for-modding이 폴더에 저장해줍니다.

여기서 주의할것은 place-apk-here-for-modding이 폴더에 저장을 해놓고

아무곳에나 복사본을 꼭! 꼭! 복사해두시기 바랍니다.(예비용입니다.)

그럼 framework-res.apk를 디컴파일 해줄 차례입니다.

* 컴파일(Compile) : C언어따위의 언어를 컴퓨터가 알아쳐먹을수있는 기계어로 바꾸는작업.
* 디컴파일(Decompile) : 컴퓨터만 알아쳐먹는 기계어를 C언어따위의 언어로 바꾸는 작업.
(뭐어어어어어어어어어?????디컴파일??? 디이컴퐈일?!?!?!?!어디서 인간이 하는말을 못알아 먹고 있어 건방지게....)













Apk manager 폴더내에 있는 Script.bat를 실행시킵니다.



아무키나 눌러줍니다.



다음과 같이 나옵니다.

여기서 우리가 쓸것은 22번과 9번과 11번입니다.

22번은 place-apk-here-for-modding폴더내에 있는 apk를 선택하는 일을 하고

9번은 22번으로 선택한 apk를 디컴파일 하는 역할.

11번은 22번으로 선택한 apk를 컴파일 하는 역할을 합니다.



22번을 누르면 아까 place-apk-here-for-modding폴더에 넣은 framework-res.apk가 보입니다.

1번을 눌러 선택해줍니다.



빨간색 밑줄처럼 apk파일이 선택된게 보입니다.



9번을 누르면 다음과 같이 Decompiling Apk가 나옵니다.

디컴파일 중인겁니다.



디컴파일이 완료되었습니다.

이제 Apk manager폴더에 있는 projects폴더에 들어갑니다.



다음과 같이 apk이름으로 된 폴더가 하나 생성이 됩니다.

이제 apk를 파헤칠수 있게 되었습니다.

framework-res.apkresdrawable 폴더로 들어가봅니다.

많은 xml파일들이 있습니다. 이 xml들이 각각의 부분들을 구성하고있으며

이 구성들이 모여 framework-res.apk파일을 이루고있는것입니다.

우리가 이제 해줄작업은 상단 배터리 아이콘을 관여하고 있는 stat_sys_battery.xml파일과

상단 충전중의 배터리 아이콘을 관여하고있는 stat_sys_battery_charge.xml을 수정할것입니다.

여기서 잠깐

디컴파일한 xml파일과 그냥 압축프로그램으로 압축해제한 xml파일을 비교해보도록 하겠습니다.



그냥 압축해제했을때의 stat_sys_battery.xml 파일 모습입니다.

컴퓨터만 알아쳐먹고 있습니다....



디컴파일을 한 동일 stat_sys_battery.xml파일입니다.

뭐가 뭔지 대충 감이 잡힙니다.

이렇기에 디컴파일을 해야되는겁니다.

또한 디컴파일을 했을때와 그냥 압축프로그램으로 열었을때 xml용량도 차이가 나지만 보이는 폴더 갯수 자체가 틀립니다.

하지만 그림파일은 완전 똑같은게 있는반면, 틀린것도 있습니다.

여기서 틀린파일은 대체 무엇이냐?

파일명이 *9.png 끝나는 파일들입니다.

*.9png로 끝나는 그림파일들을 보면 약쪽끝에 검은색 선들이 그어져 있는게 있습니다.

이파일들은 나인패치라는 작업을 거친 그림파일입니다.

이 나인패치는 그림파일에서 늘어나는부분을 지정해줘서 그림파일이 늘어나게 되어도

그림파일이 깨지지 않고 보이게 하는 역할을 합니다.

대표적으로 안드로이드 폰에서 전화가 왔을때

왼쪽에서 오른쪽으로 쭉 끌어당기는 그 통화버튼, 그렇게 늘어나도 깨지지 않고 자연스럽게 되죠

그런게 나인패치된 파일입니다.

나인패치 방법은 다음강좌에서 설명해드리겠습니다.

자 이제 소스를 분해해볼 차례입니다.

projectsframework-res.apkresdrawable 폴더에 가셔서

stat_sys_battery.xml을 마우스 오른쪽 버튼 눌러서 편집을 눌러줍니다. 메모장으로 열어도 됩니다.
(이후부터 xml파일을 열라고 하는것은 편집으로 여는것을 말하는겁니다. 컴퓨터에서 xml파일을 직접실행시킬일이 없습니다.)




이게 순정 프레임워크 stat_sys_battery.xml파일입니다.

그럼 제가 준비물로 첨부파일 올린 불멸drawable폴더에 있는 stat_sys_battery.xml을 열어봅니다.




이런식으로 나오게 됩니다.

프로그램에 대해 조금 아시는분이라면 이 내용이 뭔지 대강 감이 잡히실겁니다.

다시 순정 stat_sys_battery.xml로 돌아와서







이부분을 살펴봅니다.



이부분을 살펴보면 배터리양이 6%에서 ~ 20%이상 까지일때 stat_sys_battery_10라는 그림파일을 출력하라는 뜻 입니다.



(resdrawable-hdpi폴더에 있는 stat_sys_battery_10.png라는 파일이름의 그림파일입니다.)






이부분을 살펴보면 배터리양이 21%에서 ~ 35%이상 까지는 stat_sys_battery_20라는 그림파일을 출력하라는 뜻 입니다.



(resdrawable-hdpi폴더에 있는 stat_sys_battery_20.png라는 파일이름의 그림파일입니다.)


이렇게 배터리양의 %마다 그림파일을 불러오게 프로그래밍 되어있는것이지요.

순정 배터리아이콘은 총 7개로 구성되어있습니다.

하지만 배터리 0~100%까지 1%씩 마다 그림파일을 출력하게 할려면

총 101장의 그림파일이 있어야 되는거죠.

그럼 제가 첨부한 예제 stat_sys_battery.xml파일로 다시 돌아와서 보시면









.
.
.
.
.



이런식으로 되어있습니다. 이구문을 해석해보면



배터리양이 0% 이상까지일때 stat_sys_battery_0이 그림파일을 출력하고



배터리양이 1% 이상까지일때 stat_sys_battery_1이 그림파일을 출력하고

이런식으로 쭉 100%까지 프로그래밍해놓은것 입니다.

제가 첨부한 준비물중에 배터리아이콘 폴더에 들어가시면

0이라고 써있는것부터 100이라고 써있는것까지 101개의 이미지가 있을것입니다.

이것이 모여서 %별 배터리양을 나타나게 됩니다.

이번에는 충전중일때의 배터리 아이콘을 해부해보겠습니다.

충전중일때의 배터리 아이콘을 표시하는 xml파일은 stat_sys_battery_charge.xml파일입니다.

디컴파일하신 순정 프레임워크폴더내에(당연히 resdrawable) 있습니다.



순정 stat_sys_battery_charge.xml 파일입니다.

stat_sys_battery.xml과는 약간 다른모습입니다.



xmlns:android="http://schemas.android.com/apk/res/android">
















이 구문을 보시면 지금 현재 충전된 배터리양이 0~20%이상까지일때 stat_sys_battery_charge_anim0이 그림파일을 출력하라 입니다.

하지만 아랫것은 좀 다름니다.


xmlns:android="http://schemas.android.com/apk/res/android">







배터리가 21%~35%이상까지일때

animation-list로 출력한다는것입니다. 다음과 같이...







duration는 애니메이션 그림이 넘어가는 시간을 설정한것입니다. 1000=1초를 얘기합니다.

즉 풀어서 얘기하면

1초동안 stat_sys_battery_charge_anim1 출력 한뒤에 그다음 그림을
1초동안 stat_sys_battery_charge_anim2 출력 한뒤에 그다음 그림을
1초동안 stat_sys_battery_charge_anim3 출력 한뒤에 그다음 그림을
1초동안 stat_sys_battery_charge_anim4 출력 한뒤에 그다음 그림을
1초동안 stat_sys_battery_charge_anim5 출력 한뒤에 그다음 그림을 출력하라는 뜻입니다.
(네, 복사해서 붙여넣기 신공입니다.)

이렇게 애니메이션 효과를 불러오는것입니다.























(이렇게 1초씩 돌아가며 말이지요....)

이해가 되셨나요???















(모르면 말구요....ㅠㅠ)

자 이제 본격적으로 작업을 해보겠습니다.

제가 드린 준비물에있는 stat_sys_battery.xml, stat_sys_battery_charge.xml이 두파일을

디컴파일한 projectsframework-res.apkresdrawable 폴더에 덮어씌우기 해줍니다.

(어짜피 소스가 다 짜져있는거니 뭐....)

그리고 배터리아이콘에 있는 모든 그림파일을

projectsframework-res.apkresdrawable-hdpi 폴더내에 붙여넣어줍니다.

(파일만 넣으세요 파일만...)



이런식으로 모두 붙여넣으셨다면

이제 컴파일을 할 차례입니다.

여기서부터 실수하시면 안됩니다.

Script.bat를 다시 실행해 줍니다.



여기서 22번을 눌러 어플 선택화면으로 들어갑니다.



방금 작업한 1번을 누르고 엔터



이제 11번(컴파일)을 누르고 엔터를 칩니다.



디컴파일했던 framework-res.apk폴더의 내용들이 컴파일중입니다.



이때 중간에 이 apk가 시스템 apk냐고 묻습니다.

그냥 n을 눌러 무시합니다.

y라고 하게 되면 sign과정을 거쳐서 그 apk를 쓸수있게 해주는건데

sign 과정을 거쳐봤자 그 프레임워크 파일을 핸드폰에 적용하면 무한 재부팅 현상이 일어납니다.

이유는 저도 모름니다.
(자랑이다.......훗....)

어짜피 컴파일한 파일을 그대로 쓸게 아니기 때문에 sign을 하지않고 n으로 넘어갑니다.

(컴파일 도중에 에러가 난 다면 이상한 파일이 들어가있거나 원래있던 파일을 지웠기 때문입니다. 원래있던 파일을 지우지 마세요)




place-apk-here-for-modding폴더에 들어가시면 unsignedframework-res.apk라는게 하나 생깁니다.

위에께 원본이고 아래것이 수정해서 컴파일한 파일입니다.

아래건 sign과정을 거치지 않아서 용량이 더 작습니다.

이건 그대로 쓰시면 안됩니다.

아까 설치한 알집을 써줄차례입니다.

알집으로 unsignedframework-res.apk파일을 열어줍니다.

알집을 실행시켜서 직접 열거나,

unsignedframework-res.apk파일을 열기하시거나 마우스 오른쪽클릭하셔서 연결프로그램->기본 프로그램선택 을 눌러주신뒤

찾아보기로 알집프로그램을 직접 지정해주셔도 됩니다.

이 종류의 파일을 열 때 항상 선택된 프로그램 사용에 체크해두시면 편합니다.

(찾아보기로 C:Program FilesESTsoftALZipALZip.Exe 이걸 지정해주시면됩니다.)







이렇게 나오실겁니다.

그리고 아무 새폴더나 만드시고

지금부터 설명드리는 파일들을 끌어다가(드래그해서) 새폴더에 빼줍니다.

resources.arsc파일을 새폴더에 빼줍니다.



이런식으로 빼주시면 됩니다. resources.arsc파일에 대한 설명은 밑에서 하도록 하겠습니다.

그리고 아까 바꿔준 xml파일을 빼줄차례입니다.



상단 배터리를 구성하고있는

이파일도 새폴더로 빼줍니다. stat_sys_battery.xml과 stat_sys_battery_charge.xml이 파일입니다.
(새폴더로 빼준 파일을 열어보시면 컴파일이 된파일이라 이상하게 나올겁니다. 이게 정상입니다.)



그리고 아까 그림을 많이 추가했던 drawable-hdpi이 폴더에 있는 내용물 모두를 통째로 빼줍니다.

사실 추가된 그림파일이나 수정된 그림파일만 빼줘도 되는데

추가된 파일이 많기때문에 헷갈리지 않기위해서 통째로 빼는겁니다.

추가된 파일만 골라뺐는데 실수로 빠트려먹은 파일이 있다면 무한재부팅이나 벽돌을 보게 되실수 있습니다.

drawable-hdpi 폴더내용을 새폴더에 새폴더를 하나 더 만들어서 그 안에 빼줍니다.



다 빼고나면 이런 모습일겁니다.




그럼 알집으로 열어준 unsignedframework-res.apk 창을 닫아주시고

place-apk-here-for-modding폴더에 있는 framework-res.apk(강좌시작하기전에 핸드폰에서 복사해왔던 원본파일입니다.)를

알집으로 열어줍니다.

이제 아까 새폴더에서 빼왔던 파일들을 이 순정 framework-res.apk에 붙여넣을 차례입니다.







resources.arsc 이 파일을 바꿔줘야 합니다.

폴더가 이렇게 보이는 최상위 상태에서

알집의 파일 추가 버튼을 눌러줍니다.







빨간색 네모박스처럼 추가버튼을 눌러 resources.arsc파일을 추가해주시거나

새폴더에 있던 resources.arsc파일을 끌어놓기(드래그)해서 추가해줍니다.







빨간색 밑줄처럼 추가 되었는지 확인하시고

압축방법은 압축안함으로 반드시 해놓고 나서 압축버튼을 눌러주시기 바랍니다.

모든 추가 되는 파일 압축안함으로 해놓고 압축버튼을 누릅니다.







(만약 이런식으로 나와서 압축방법이 안나오시는분들은 고급설정버튼을 눌러주시면 나타납니다.)









위에서 압축버튼을 누르셨다면 이렇게 나옵니다.

안나오면 이상한겁니다. 반드시 나와야됩니다.

안나오면 이상한 폴더에 추가하려고 하시는겁니다.

이 중복확인 창이 안뜨면 정신줄 놓고 있는겁니다. 나와야합니다.

빨간색 네모박스처럼 덮어쓰기를 꼭 해주세요.

덮어쓰기 안하고 건너뛰기 하시면 안됩니다.

반드시 덮어쓰기 해야 추가가 됩니다.

그렇지 않으면 파일이 제대로 추가가 되지 않아 벽돌이나 무한 재부팅 보십니다.

덮어쓰기로 선택하고 확인을 눌러줍니다.

이제 stat_sys_battery.xml, stat_sys_battery_charge.xml 이 두파일을 추가해줄 차례입니다.

알집에서 이 두파일이 원래 있던 폴더로 들어갑니다.







빨간색 네모박스처럼 저 폴더를 클릭하면 drawable폴더내 파일이 나옵니다.

이상태에서 파일추가를 눌러줍니다.







이런식으로 나오겠죠

압축안함으로 하시는거 잊으시면 안됩니다. 압축버튼 눌러줍니다.







이런식으로 나옵니다.

덮어쓰기 선택하고 모든파일에 적용에 체크해주고 확인누릅니다.

이제 그림파일들을 넣어줄 차례입니다.








알집에서 drawable-hdpi 폴더로 이동하시고 파일추가 버튼을 눌러줍니다.







이런식으로 빼놓았던 모든 그림파일 추가 해주시고

압축안함으로 체크하는거 잊지 마시고 압축버튼 눌러줍니다.






덮어쓰기 체크하시고 모든파일에 적용 체크 하시고 확인버튼 눌러줍니다.

이제 다 되었습니다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

아놔 힘들어ㄹ먀ㅔㄷ러 ㅁㄴ데ㅑㄹ먼ㄷ레ㅑㅓㅁ넫ㄻㄴ데ㅓㄹㅁㄴ데루메댜뤠뭎 ㅔ무벰 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ








여기서 끝내고 도망가고싶습니다.









하지만 강좌가 아직 남아있습니다. 끝까지 주의사항까지 읽고 적용하시기 바랍니다.

아까 resources.arsc파일이 무엇인지 설명안드리고 그냥 넘어갔습니다.

처음에 framework-res.apk을 디컴파일했을때에는 resources.arsc이 파일이 없었을겁니다.

하지만 컴파일이 완료된 framework-res.apk파일을 알집으로 열었을때는 resources.arsc이 파일이 존재하죠.

무슨 차이일가요?

그전에 짚고 넘어갈것이 있습니다.

강좌를 처음부터 잘보셨다면 제가 강좌 시작단계에서 알집으로 열었을때와 디컴파일했을때의

보이는 폴더의 갯수도 틀리고 파일도 틀리다고 말씀드렸습니다.

resources.arsc이놈은 한마디로 코드의 집약체라고 보시면됩니다.

디컴파일한 framework-res에는 있는폴더와 파일들이

알집으로 열었을때 없으면 그건 모두 resources.arsc에 저장된겁니다.

디컴파일했던 projectsframework-res.apkresvalues 폴더로 들어가보시면

public.xml 파일이 있습니다. public.xml이파일은 그림파일들의 id들을 정의해놓은 파일입니다.

이걸 열어봅니다.



파란색부분을 잘보시기 바랍니다.

순정의 public.xml이라 stat_sys_battery_0, stat_sys_battery_10, stat_sys_battery_100, stat_sys_battery_20
stat_sys_battery_40, stat_sys_battery_60, stat_sys_battery_80
stat_sys_battery_charge_anim0, stat_sys_battery_charge_anim1, stat_sys_battery_charge_anim2
stat_sys_battery_charge_anim3, stat_sys_battery_charge_anim4, stat_sys_battery_charge_anim5
이 그림파일들만 정의되어있습니다.

당연한겁니다. 순정이니깐요

하지만 우리가 바꿔준 결과물을 보면 어떤 결과가 나올까요?

이부분은 따라해줄필요는 없습니다. 그냥 참고용으로 보세요.

우리가 작업을 완료한 framework-res.apk파일을 다시 디컴파일해서 public.xml파일을 열어봤습니다.



다른건 모두 똑같습니다.

하지만 파란색처럼 우리가 추가해준 파일에 대한 정의가 되어있습니다.

즉, 다시 말해서 아까 우리가 작업할때 새로운 그림파일들이 추가되면서

apk manager가 컴파일할때 resources.arsc에 추가된 그림파일을 자동으로 인식해 기록한것이고

추가된 기록에 대한게 필요하기에 resources.arsc 이녀석을 아까 알집으로 작업때 바꿔준겁니다.

그 증거로 resources.arsc을 메모장으로 직접열어서 아까 추가한 그림파일중 stat_sys_battery_12라고 검색해보면







이렇게 검색이 되는걸 볼수있습니다.

우리는 이렇게 추가된 그림파일 정보를 담고있는 resources.arsc가 필요한것이고

그 resources.arsc파일을 구하기 위해서 디컴파일과 컴파일 하면서 노가다를 하게되는것입니다.

resources.arsc이 파일에 대한 정의도 가지고 있지 않은데 그림파일만 그대로 붙여넣고 그 apk파일을 핸드폰에 적용한다면

무한재부팅과, 벽돌을 보실수있는겁니다.

하지만, 이미 resources.arsc에 기록이 되어있는 그림파일명을 그림만 바꿔치기 하는건 가능합니다.

그래서 제가 제일 처음에 첫번째 강좌와 두번째 강좌를 나눈 이유가 여기있습니다.

첫번째 강좌는 그림파일 갯수를 추가 하면서 xml을 수정하는 방법이고

두번째 강좌는 그림파일만 바꿔치기하는 강좌입니다.

--------------------------------------------------------------------------------------------------

두번째 방법. 이미지를 같은파일이름을 가진 다른이미지로 교체하는방법.


※ 주의사항 : 적용하려는 그림파일이 파일명이 같아야 합니다.
※ 주의사항 : 적용하려는 그림파일이 파일명이 같아야 합니다.
※ 주의사항 : 적용하려는 그림파일이 파일명이 같아야 합니다.
※ 주의사항 : 적용하려는 그림파일이 파일명이 같아야 합니다.



간단합니다.

제가 처음에 드린 준비물중에 불멸.zip에 보면

안테나 아이콘 폴더가 있습니다.

순정을 이 그림파일들로 바꿔줄겁니다.

아까 우리가 완성했던 framework-res.apk을 알집으로 열어줍니다.







안테나아이콘들도 배터리아이콘들과 같은 폴더인 resdrawable-hdpi 폴더에 들어가있습니다.

알집에서 framework-res.apk를 여셨으면 resdrawable-hdpi에 들어갑니다.







여기서 파일 추가를 눌러줍니다.







31개의 파일입니다.

압축안함으로 하시고 압축눌러주시면 됩니다.







여기서는 아까와는 다르게 할겁니다.

덮어쓰기에는 체크하되 모든파일에 적용에는 체크하지 마시고 확인을 누르세요

총 31번 누르면 맞는겁니다.

이미 있는 파일명을 또 덮어쓰려니 뜨는거지요.

만약에 30번만 떴다면 원래 있던 파일명과 다른 파일명이 1개가 들어갔다는 소리가 되겠죠

하지만 제가 첨부해드린 파일들은 이미 있던것들이라 31개가 정확하게 뜰겁니다.

자이제 알집을 닫아줍니다.

두번째 방법은 이게 끝입니다.



참 쉽죠잉?


------------------------------------------------------------------------------------------------------

이제 적용방법 입니다. 사실 이부분도 중요하지만, 이부분 상세히 설명 안드리겠습니다.

제가 이미 이전 강좌에서 설명드렸는데다가

강좌를 들으셨는데도 이밑에 설명을 모르신다면 이전에 쓴 강좌를 제대로 숙지 못하신것입니다.

제대로 숙지 못한분들께 권하는 작업이 아님을 처음시작부터 이미 말씀드렸습니다...

제가 할줄안다고 자만 떠는게 아니고, 이해를 못하셨는데 시도해서 벽돌되실까봐 그렇습니다.

이부분을 잘못하실경우 무한재부팅과 벽돌이 되십니다.

이 아래부분을 이해 못하시면 http://toforyou.tistory.com/54 이강좌를 다시 보고 오시기 바랍니다.

그래서 그냥 이부분은 글로만 설명드립니다.

첫번째를 거쳐 두번째까지 완성된 framework-res.apk파일을 외장메모리에 넣습니다.

외장메모리에서 framework-res.apk파일을 rootsystem폴더에 넣어주시고 난뒤
(절대 직접적으로 systemframework 폴더에 넣지 마세요)

퍼미션을 정해주고나서 잘라낸뒤에 systemframework폴더에 붙여넣습니다.

그리고 나서 재부팅해주시면 완료가 됩니다.

프레임워크 파일을 바꾸고 나서 하는 첫부팅은 시간이 약간걸립니다.



* system폴더에 넣고 퍼미션을 정해주고나서 옮기는거 잊지마세요.
** system폴더에 여유공간이 있는지 확인하세요.
*** 벽돌될수 있으니 마지막으로 애인에게 전화 한통 하세요.
**** 물론 전 전화할 사람이.....






















작업 완료된 모습입니다. 오전 2시 33분 ㅠㅠ

상단에 배터리표시부분과 안테나 표시부분이 바뀌었습니다.

여섯번째 강좌 끝.


* 알집 최신버전을 사용할경우 압축헤더가 손상됐다는 에러가 나옵니다. 강좌에 첨부해놓은 알집버전을 사용하시면 해결됩니다.




댓글 136
1 2 3
  • ?
    hooney
    11.02.11
    ㅋㅋ 정말 사진들과 설명이 잼있었요!!!!!!ㅋㅋㅋ
    지금 졸려서 제대로 정독은 못했는데!
    일단 추천합니다!!! 내일 정독해야지~^_^
    좋은밤되세요!!
  • ?
    최고!! 열라웃깁니다 ㅋㅋ
  • ?
    대박! ㅋㅋㅋㅋ 와우! 정말 재미있게 포스팅 하셨네요. 감사합니다. 대왕추천
  • ?
    갤럭시K 유저는 얼마없어 여기서 불멸님을 뵙네요!..강좌글 잼나게 작성하셔서..시간가는줄 모르고 봤습니다. 조금이라도 빨리 나왔으면 제가 공부하는데 도움이 많이 되었을텐데..하옇튼 강추합니다.
  • ?
    ㅋㅋㅋㅋ강좌 너무 재미있어요
    저도 이런 강좌 있었으면 좋겠다 싶었는데 강좌 감사합니다:)
  • profile
    LavI
    11.02.11
    아....강좌이렇게쓰기힘드신데..
    종결자이십니다^^
  • ?
    behind
    11.02.11
    대...대박이십니다!!! 완전 쉽게...찾던 자료가 여기있네요^^
    추천 꽝하고 갑니다~
  • ?
    흐미 이런 작업들을... 정말 대단들 하십니다. ㅋ 내일부터 컴터학원 등록할까?????????
    저도 해보고싶은데.... 초등학교때 도스랑 베이직? 배운게 전부라 ㅋ 아무튼 정말 유용한 팁입니다. 테마를 제작하시는분들 정말 고생많이들 하시네요 추천 추천 전이제 요게시물 프린트하러갑니다. ㅋ 독학의 길은 정말 험난하군요 ^^
  • ?
    알집 최신버전을 사용할경우 압축헤더가 손상됐다는 에러가 나옵니다. 강좌에 첨부해놓은 알집버전을 사용하시면 해결됩니다.
  • ?
    dydx™
    11.02.12
    전에 이거보고 배웠습니다 ㅋ 감사합니다.
  • ?
    nike4u
    11.02.12
    잘 바뀌었어요! 적절한 사진배치ㅜ 수고많으셨습니다ㅎ 지금 패치는안하고 superoneclick으로 루팅만 한 상태인데요. 다시 unroot 해준다면 배터리와 안테나위젯은 어떻게되나요?
  • ?
    root와 unroot는 단순한 권한만 부여함으로 이미 교체한 테마는 그대로 유지됩니다.
  • ?
    arkx
    11.02.13
    자세한 설명 잘봤습니다.. :D
  • ?
    재미있고^^ 고생하셨내요~
  • ?
    완전 대박!! 전 갤럭시S 사용하는데요~첨으로 님 글보구 따라했는데~
    완성했어요~근데...완성은해놓고 적용해봐야할지 말아야할지
    고민하다가 질러보자는 맘으로 적용해봤는데~
    글쎄 이게 왠일이랍니까~ 아무 문제 없이 적용되고 잘돌아갑니다^^
    넘넘~ 감사해요^^ 이걸 응용해서 천천히 하나하나 바꿔봐야겠어요~
    정말이지 만들어 보고싶었는데,,드디어 할수있다니 넘 기뻐요^^
    감사 또 감사 드립니당ㅋㅋ불멸님 짱짱짱!!!!
  • ?
    수야.
    11.02.14
    수고하셨습니다^^
    근데요~ 하라는대로 다 하고.. 작업 다 끝나고 적용시켰습니다.
    카페에 다른분이 만들어놓은 파일을 받았는데...계속 무한부팅걸려서....이번기회에 직접하게됐는데요
    무지개도뜨고..배터리아이콘도 바뀌고..부팅이나 실행도 잘되는데...
    배터리 잔량이 1%단위로 바뀌질 않고 기존처럼 20%단위로 바껴요...
    아이콘은 바꼈는데 말이죠...ㅠㅠ 왜그럴까요?? 바꿀수 없을까요??ㅠㅠ
  • ?
    요크
    11.02.14
    수고하셨습니다.
    앞으로도 좋은강의 부탁드립니다. ^^
  • ?
    강좌를 처음부터 다시 보시기 바랍니다.
    몇몇 과정이 빠지셨습니다.
  • ?
    감사합니다...
    의욕 만발 ^^
  • ?
    좋은 강좌 감사합니다.
  • ?
    총아
    11.02.17
    배터리 그림파일의 크기가 25x38 인것에 불멸님이 주신 38x38를 했을때 에러가 발생하나요?
    불멸님 글대로 따라했으나 다시 컴파일하는 부분에서 계속 에러가 나네요. ㅜㅜ
    크기가 틀려짐에 따라 수정해야할 파일이 있다면 알려주세요.
    왠만한건 열어봤는데 못 찾겠네요 ㅠㅠ;
  • ?
    크기는 세로사이즈가 같은 38이라서 전혀 문제가 없습니다.

    log.txt파일 내용을 올려주시면 문제해결에 도움드릴수 있을거 같습니다.
  • ?
    HID™
    11.02.17
    웁스~대단 하십니다.
    좋은정보 감사해요~
  • ?
    총아
    11.02.17
    셜리님이 올려주신 배터리아이콘을 적용한뒤에 xml을 직접 바꾸고 했더니 정상작동 하네요.
    아까 안되었던건 디컴하여 풀린 drawable 폴더에 .9.pnp 중 쓸모 없는 파일 하나가 있어서
    그런거 였어요. 지우니까 되네요 ^^
    많은거 배웠어요 ㅎㅎ 감사합니다 ^^
  • ?
    총아
    11.02.18
    java version \"1.6.0_24\"
    Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
    Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
    \'adb\'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
    배치 파일이 아닙니다.
    Exception in thread \"main\" unacceptable character #FFFD special characters are not allowed
    in \"\", position 28
    at org.yaml.snakeyaml.reader.Reader.checkPrintable(Unknown Source)
    at org.yaml.snakeyaml.reader.Reader.update(Unknown Source)
    at org.yaml.snakeyaml.reader.Reader.peek(Unknown Source)
    at org.yaml.snakeyaml.reader.Reader.peek(Unknown Source)
    at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(Unknown Source)
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(Unknown Source)
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(Unknown Source)
    at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(Unknown Source)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(Unknown Source)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(Unknown Source)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(Unknown Source)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Unknown Source)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(Unknown Source)
    at org.yaml.snakeyaml.Loader.load(Unknown Source)
    at org.yaml.snakeyaml.Yaml.load(Unknown Source)
    at brut.androlib.Androlib.readMetaFile(Unknown Source)
    at brut.androlib.Androlib.build(Unknown Source)
    at brut.androlib.Androlib.build(Unknown Source)
    at brut.apktool.Main.cmdBuild(Unknown Source)
    at brut.apktool.Main.main(Unknown Source)


    이건 왜 이럴까요? ㅠㅠ 이유를 모르겠네요 ㅠㅍ
  • ?
    xml수정을 잘못하신거 같습니다.
  • ?
    JUNGSSI
    11.02.20
    잘봤습니다

    꼭 필요 없는 내용까지 꼼꼼하고 세세하게 가르쳐주신점이 정말 인상깊었습니다.

    그런데 알집 8.2으로 해본결과 그 파일 덮어씌기를 해도 안먹는경우가 있더군요

    삭제 -> 파일추가로 하니깐 잘되네요 ^^
  • ?
    우왕굳ㅋ
    이거엿군여...
    TA28업글되고나서 테마덮으니 배터리가 ㄷㄷㄷㄷㄷ지멋대로 ㅋㅋㅋ
    그래서 그냥 뛰어들엇는데 성공했어용~우히히히히> <
    넘넘감사함니다앙^.^
  • ?
    아... 우선 이게 뭔가 해서 읽지는 않구 쭈욱 내려봤어요..
    완저너 초보인데 왠지 적절한 유머로 스트레스 덜 받고 배울수 있을꺼 같다는 생각이 드네요...
    근데... 초보에 컴맹인지라 뭔가가 어려울꺼 같은..ㅠㅠ
    좀더 공부한다음에 배워야 할꺼 같네요..
    초보에게 용기를 주소서~!!!
  • ?
    재밌게 그리고 감사히 잘 봤습니다. ^^
  • ?
    배터리 표시기를 충전중일때 0~20번 애니메이션 파일을 99%계속 표시하고싶은데
    맥스를 99까지 하고 충전애니메이션을 0~20번까지 한번에 적어놓았는데 안되네요;
    어떻게 해야할까요 ㅠㅠ
  • ?
    놀랍네요. 그냥 빌드하는것 보다 더 어려울거 같습니다.
  • ?
    폰 예쁘게하신분들 바라만보면서 부러워만했었는데 저에게 한줄기 빛과 같은 강좌에요

    갤스호핀 혹시 안되면 어쩌나 손 달달 떨어가면서 했는데

    친절하고 알아듣기 쉬운설명 덕분에 해냈습니다^^ 넘넘 뿌듯하네용~~

    복 받으실꺼에요^^
  • ?
    제대로 한것 같은데 ,,ㅠㅠ 재부팅했는데

    안변했어요...ㅠㅠ 뭐가 문제죠??
  • ?
    베가x 사용잔데요 framework-res.apk파일을 뽑아올때
    루트익스플로러에서 시스템폴더에서 sdcard로 복사한 후에 gmail로 첨부해서(컴터를연결할상황이아니라..ㅠ.ㅠ)받았는데요 제가 한 이과정에서 파일이 손상되나요?
    signed 한파일과 unsigned한 파일을 찾을수가 없다면서 9번이 안됩니다..ㅠ.ㅠ...
  • ?
    갤럭시u 사용잔데요 다적용했는데 배터리는 똑같이 되는데

    안테나는 무지개 색깔로 바뀌지가 않네요...뭐가 잘못된걸까요...
  • ?
    강좌를 잘 읽어보셨으면 좋겠습니다.
    다른분은 다 잘되시는데 왜 안되실까요 ㅠㅠ
  • ?
    그 두가지 파일이 없다는게 에러내용은 아니구요
    다른데 문제가 있어서 그렇습니다.
    에러 로그를 전부 올려주시면 한번 봐드릴께요..
  • ?
    이번에 폰을 구입하고 뭐가뭔지몰라 한참헤맸는데 불멸님의 상세하고 쉬운 설명 덕분에 많이 배웠습니다.
    너무 감사드립니다^^
  • ?
    覇王
    11.02.27
    디컴파일까지하고 위의 방법대로해서 컴파일할라니 오류가 뜨네요
    \"An Error Occured, Please Check The Log option\"
    데체 뭐가 문제일까요....
  • ?
    ㅎㄷㄷ;;도저히엄두가안나는데혹시옵티머스z도이런식으루하면대나요??
  • ?
    저두 컴파일할때 \"An Error Occured, Please Check The Log
  • ?
    이령
    11.03.06
    옵시크 유져입니다 이 강좌를 보고 배터리아이콘을 바꿀수 있게 되었습니다 ㅠㅠ
    정말 감사합니다
  • ?
    감사합니다
  • ?
    강좌 내용 너무너무 감사드립니다...ㅎㅎ

    한가지 궁금하여 여쭙는데요..
    drawable-hdpi 폴더 안에 있는 이미지들은 모두 RGB모드인데요
    배터리이미지는 index모드로 되어있던데 왜그럴까나요...
    그냥RGB이미지로 대체해도 상관 없나요?
    RGB로 작업한것 index모드로 바꿔서 넣어볼랬더니 변환시 설정 값들도 모르겠고 용량은 더 커지고 그러네요..

    그래서 그냥 RGB로 대체하고 폰에 적용은 잘 됐는데요..
    근데 배터리 소모가 심해진거 같아 혹시 이것 때문이 아닌가 하여 좀 여쭙니다...ㅎㅎ
  • ?
    이게 scrift.bat 여기서요 22번 누르고 1번 누르고 9번 누르면 디컴파일 되잖아요?
    9번 누르면 에러떠요. 디컴파일 안되고 파일도 안생기는데 왜이러죠,,,
  • ?
    수고 하셨습니다. 갤럭시S인데 자세한 설명을 해 주셔서 성공 하였습니다. 감사 합니다.^^
  • ?
    능력자님의 노고에 그저 감사할 따름입니다 정말 대단하세요!!!!!!!!!!!!!!!!!!!!!!!
  • ?
    잘봤습니다~친절한 설명 감사드려요^^ 함 다시보고 시도해봐야겠습니다~~~
  • ?
    바다의옹
    11.03.17
    전 n 을 누르면 왜 파일이 안생기는걸까요..ㅜㅜ
댓글 쓰기 권한이 없습니다.
분류 추천순 목록 검색 쓰기
List of Articles
제목 글쓴이 추천 조회 날짜
[롤리팝] 커널패치 루팅법 입니다! (킷캣,젤리빈에도 유용!!!) 193 file hsk 448 27571 2014.12.07
맛클 포인트 얻기에 가장 쉬운 방법............ 196 비빅비 406 8772 2013.04.17
4.3 드디어 루팅법 알아냈습니다ㅜ 71 file Jason K 184 32388 2013.10.25
강좌 테그라크(빌드30이후) 업데이트폴더 테마적용방법 232 file 택이아빠 150 71918 2011.06.11
[6개] 겔럭시 노트 젤리빈 베터리 광탈 현상 최소화 하기..! 152 file HackerChang 143 25411 2013.02.18
강좌 안드로이드 framework-res.apk 수정방법(테마수정, 시스템어플수정) 136 불멸[갤K] 140 88261 2011.02.11
부팅 및 종료 애니메이션 파일(*.qmg) 파일 만들기 방법 68 file 웃음투자 137 17426 2013.03.25
Universal Adrenaline Shot V14 470 file 맛싸이언 124 39511 2011.09.30
강좌 [간단루팅]갤럭시S3 NI3 루팅하기! 54 file 5755084 117 27150 2014.10.07
Galaxy Tuner 소개 (IO scheduler, LCD 색온도, HW sound) 201 file 자양 114 35633 2011.01.05
lgu 갤s8+ 구글락 글올린 사람입니다 598 file 떳다마린 113 17603 2018.03.25
[겔S : 1월 11일 V2] 이카루스 패치 N2 - 배포게시판이동 262 file 이카루스 113 16246 2011.01.09
[포인트 올리는 법] 포인트를 올리는 가장 기본적인 루트를 적어두었습... 17 berics 109 526187 2015.03.10
기어s2 다운그레이드 (스포츠,클래식)(아이폰연동) 105 file 정현성 103 16552 2016.01.25
노트2/갤탭10.1)멀티윈도우 가능한 어플 추가하기 108 file 고대인 103 64292 2012.11.11
강좌 잠금화면 상단바 갤4처럼 투명화하기 191 file MuHyeon 100 17653 2013.08.01
강좌 LG V20 부트로더 언락하기(국내 내수용,버라이즌,스프린트,AT&T 모... 300 file xps 94 11972 2017.02.12
노트3 기본 어플 자동 삭제 (세계 최고 387개) #1차 수정 99 file Anony 93 25632 2014.03.01
갤럭시노트 멀티윈도우 포팅시 주의할점과 포팅방법 75 file focusnf 92 16555 2013.02.14
[팁] 롤리팝 디오덱 방법 68 file 푸른구름 88 13551 2015.07.21
갤럭시S4 SKT 기본어플 삭제가능목록 정리해서 올립니다. 61 file 야미 87 60859 2013.09.07
강좌 [안드로이드] 디컴파일 되지 않는 시스템어플 디컴파일 하기 68 불멸[갤K] 87 22894 2011.02.17
강좌 textplus를 이용한 공기계 카카오톡 인증! 36 file bjw4227 86 55530 2015.01.31
[팁][롤리팝] S파인더 퀵커넥트 간단하게 제거하기 24 file hsk 85 22619 2015.05.21
강좌 [대부분의 삼성기종] 카메라 셔터무음 활성화 76 file bdessd 85 14659 2015.05.08
강좌 노트10.1 lte (E230S) 루팅강좌 + 순정펌(4.4.4) 킷캣 58 file 장벌 85 20619 2014.10.28
강좌 Root Explorer(루트익스플로러) 사용방법 114 berics 85 63401 2011.02.10
루팅 관련 용어 정리 71 크램프 84 3456 2013.01.23
패블릿모드 하는법! 강좌 379 file 쿤투 83 30993 2013.03.17
[참고] 롤리팝 루팅 이후 보안알림 제거 (KNOX, SecurityLogAgent 제거... 36 file hsk 81 31851 2015.03.22
1 - 135