xml 수정을 통한 테마 포팅 [Theme porting Guide]

2013.08.08 09:21






테마이식을 위한 xml수정방법

테마이식을 위한 분석편에 이은 xml수정 포스팅을 진행해 드리겠습니다. 사실 이미지 이식을 해보신 분이라면 xml도 손쉽게 하실 수 있습니다. Beyond compare라는 프로그램 사용법만 알고 계신다면 소스수정은 비교해보면서 틀린부분만 바꿔주시면 됩니다. 해외자료 포팅도 지금하는 이식 방법과 똑같습니다.

다만 해외자료는 타기종이기 때문에 해당기기의 순정펌웨어를 구하셔야하고 같은 기종 다른통신사의 자료를 이식하는것 보다는 조금 더 까다롭습니다. 이건 다음시간에 다루기로 하겠습니다.


테마이식강좌를 진행하면서 이미지 이식강좌를 하고 많은 분들이 소스수정도 어렵지 않게 하시는걸 보고 이식강좌를 잠시 잊고 있었는데 처음 시작하시는 분들이 많이 어려워하셔서 xml 수정을 통한 이식방법을 따로 진행해 드리기로 마음 먹었습니다. 컴파일,디컴파일, 오덱스강좌를 다 보신 분들이 라면 어렵지 않게 수정하실 수 있을 겁니다. 이 포스팅까지 하신다면 기본적인 테마이식 방법은 다 알게 되는데 제가 진행하는 테마이식 포스팅은 개념만 알려드리는 것 뿐이고 실제로 이식을 하다 보면 많은 변수가 나오게 됩니다. 그 변수를 모두 다루기는 불가능합니다. 기본적인 내용을 숙지하신 후 부딪치시는 수 밖에 없습니다.


테마이식이나 해외자료 포팅을 어느 정도 하시다 보면 자기만의 노하우가 생기고 각각의 xml 명령어들에 익숙해지게 되면 더 쉽고 빠르게 이식을 하실 수 있습니다. 어느 정도 자신이 생기신다면 자신만의 테마를 제작해 보시는 걸 추천해드립니다. 



지금까지 테마이식에 관한 내용을 정리해드리면 

이미지만 이식하신다면 apkmanager가 필요없고 beyond compare와 7zip, 알집정도면 충분합니다.

이미지와 소스를 같이 이식하신다면 추가적으로 apkmanager를 다룰 줄 아셔야합니다.

그리고 테마이식과정에서 처음에는 이미지에 신경 쓰지 마시고 xml소스부터 이식해주세요. 추가되는 이미지는 추가해주셔야 하고요. xml수정과 컴파일 과정을 거친 후 나중에 이미지를 넣는 게 훨씬 편합니다.








자료 포스팅 하는데 힘이 될 수 있도록

ViewOn 손가락 버튼 꾹 눌러주세요.

(로그인 안하셔도 됩니다)






테마이식을 위한 xml 수정하기

본 포스팅을 보시기 전에 이전 포스팅을 먼저 읽어 주셔야 합니다. 이전 포스팅을 이어서 진행하도록 하겠습니다. 

이전 테마이식을 위한 분석 포스팅 보러가기



테마이식에 같은 통신사에 같은 기종을 이식 할 경우는 드물겠지만 포스팅은 이해를 돕기 위해서 제 갤럭시노트 기능테마 중 framework-res.apk와 순정 framework-res.apk를 비교해서 포스팅해드릴께요




타통신사의 테마를 자기 통신사로 이식하는 방식은[ 예) KT테마를 SK로 포팅할 경우]

KT 순정파일과 KT 테마파일 beyondcompare로 비교를 하신 후 틀려진 부분만 확인해서 SK로 그대로 포팅만 해주시면 됩니다. 이번강좌를 통해서 달라진 파일과 추가된 파일을 분석해서 수정하는 방법을 소개해드릴께요.

그리고 다음 강좌에서 실제 KT파일을 SK로 이식하는 방식을 실예를 통해서 보여드릴께요.




ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

이전 강좌  이어서 진행 할게요.

me3_framework-res.apk(순정)과 theme_framework-res.apk(테마)를 디컴파일 하신 후 비교해본 스샷입니다. me3은 저희가 수정할 파일이고 theme는 이미 만들어진 테마파일입니다.

설명을 돕기 위해 조금 복잡한 파일을 비교하고 있는데 처음 시작하시는 분들은 기능테마가 많이 들어간 파일이식보다는 시계중앙, 색상변경, 폰트크기 변경등 조금씩 수정된 파일 부터 이식을 시도해보세요.



처음 신경 쓰실 부분은 추가되는 파일입니다. 아무리 xml수정을 정확하더라도 연결되어있는 추가파일이 없으면 컴파일 시 오류가 납니다. 추가파일은 대부분 수정 없이 그대로 넣어주시면 됩니다. 


추가된 이미지에 9패치 이미지가 있을 경우 아래 강좌를 참조해서 넣어주세요.

나인패치 이미지 관련 컴파일 오류 해결하기




우측상단에 비교조건에 Show Orphans를 선택하면 테마파일에 순정에 추가된 파일만 표시가 됩니다.






이 상태에서 추가되는 파일을 마우스로 드래그로 선택을 하시면 쉽게 선택이 가능합니다. 선택되어진 상태에서 마우스 우클릭을 누르시면 아래와 같이 Copy to Left를 눌러주시면 됩니다.

(right, Left 주의 하세요. 전 좌측이 순정이고 우측이 테마파일이라 순정쪽인 좌측으로 파일을 복사하는 겁니다.)



그럼 우측에 추가파일들이 좌측으로 복사가 되면서 추가파일 목록에서 사라집니다. 이런 식으로 우측에 추가파일들을 좌측으로 모두 복사해주시면 됩니다.

(전 보여주기 위해 따로 잡았지만 처음부터 모두 드래그해서 옆으로 복사해주시면 됩니다.)




이젠 추가된 파일이 아래 스샷처럼 없죠?


이제 비교조건을 아래와 같이 Show Differences로 바꿔주세요.(순정에서 틀려진 소스를 찾기 위함입니다.)



Drawable뒤에 무언가 붙는 폴더는 추가된 이미지가 없기 때문에 안보셔도 관계 없습니다. 하지만 뒤에 아무것도 없는 drawable폴더 안에는 xml이 존재하니까 수정되는 xml이 있으면 같이 수정하셔야합니다.



소스(xml) 수정부분은 layout과 Value쪽을 보시면 됩니다. 달라진 xml을 이제 같게 수정을 해주시면 됩니다.

(이 때 values폴더 안에 public.xml 일단 무시하고 진행하세요. 파일 내 Id는 컴파일작업 시 생성됩니다.)



keyguard_screen_glogin_unlock.xml파일을 한번 수정해 볼까요? 해당파일을 더블클릭해주세요. 그러면 xml이 탭이하나 생기면서 새로열립니다. 달라진 부분에 붉은 음영이 깔리는데 어디가 달라진지 확인을 해보신 후에 중앙에 있는 화살표(<=)를 눌러주시면 우측의 소스가 좌측으로 복사됩니다.




좌측으로 복사가 되면서 테마소스가 순정으로 이식이 완료 되었습니다. 그럼 디스크 모양을 눌러서 저장을 하시면 xml파일하나 수정이 완료 되어진 겁니다. 같은 방식으로 확인해보면서 틀린 xml파일을 수정하신 후 다 저장해 주세요. 저장을 하신 후에 탭은 닫지 말아주세요. 수정하는 파일이 많다 보면 어디를 수정했는지 모르게 됩니다. 그래서 최종으로 unsigned파일에서 순정으로 파일을 넣을 때 헷갈릴 수도 있습니다.



파일을 비교하면서 수정된 파일에 대한 수정을 다 끝내주세요. 그리고 이젠 me3-framework-res.apk를 컴파일 해주세요. (소스의 순서가 바뀌어서 확인하는데 시간이 많이 걸릴 수도 있습니다.)



Script.bat을 실행하신 후 22번눌러서 me3-framework-res.apk를 선택하신 후 11번으로 컴파일 해주세요.



아래와 같이 컴파일이 무사히 완료되면 아래와 같이 "Is this a system apk"나오면 "N"를 눌러주세요.

처음 테마작업을 하시면 이 "N"자를 누르기까지 많은 시행착오를 겪게 될 거 같습니다. 이 부분에서 오류가 나신다면 컴파일 오류관련 포스팅을 보시고 수정해보시면서 다시 컴파일 해보세요.



이제 place-apk-here-for-modding폴더로 들어가 보세요. unsignedme3_framework-res.apk가 생성이 되었을 겁니다. 이 unsignedme3_framework-res.apk파일의 정보를 순정파일에 덮어 씌워주시면 xml소스수정이 완료가 됩니다.



그럼 순정파일과 unsigned파일을 알집으로 따로 열어서 아래 스샷처럼 만들어 주세요.

(좌측에 수정정보가 있는 apk의 파일을 순정 apk로 포팅하는 작업입니다. 좌우측 순서 유의해주세요)




좌측의 resources.arsc파일을 아래 스샷과 같이 우측에 순정파일에 덮어 씌워주세요.

소스를 수정하시면 resources.arsc파일은 제일 먼저 옮겨주세요. 이 파일에는 이미지가 추가될 시 생성되는 id값의 정보와 Value폴더안의 수정된 모든 내용이 저장되어 있습니다. 




파일을 덮어 씌우시게 되면 아래와 같이 선택작업 팝업이 나오는데 현재파일에 추가하기 선택해주세요.




그리고 중복확인 팝업 창에서 덮어쓰기를 선택해 주세요 

(여러 개 파일을 덮어 씌우실 경우는 모든 파일에 적용체크해주세요.)


그럼 아래와 같이 압축작업이 진행됩니다.



이제 자신이 beyondcompare에서 수정한 모든 xml 파일을 위와 동일한 방식으로 좌측의 파일을 우측으로 덮어 씌워주시면 됩니다. (단 value쪽에 속하는 항목은 resources.arsc파일 안에 포함되어서 알집에는 안보입니다.)



수정된 모든 파일을 덮어씌워 주시면 xml수정작업이 완료되어진 겁니다. 이후에 이미지만 따로 넣어주시면 됩니다. 이미지를 미리 안 넣는 이유는 이미지와 xml동시에 작업하면 오류 날 경우 확인이 더 힘들어집니다. 그래서 xml쪽부터 이식을 한 후에 이미지를 따로 포팅하는 겁니다. 이젠 아래 강좌를 보시고 이미지를 추가로 덮어씌워주시면 됩니다.  테마이미지 이식하기





Apk상에서 수정된 xml이식방법에 대해 포스팅해드렸습니다.

다른 테마제작님들은 어떻게 작업을 하고 계시는 모르겠지만 아마도 비슷한 방식이라고 생각이 듭니다.


오늘은 개념만 설명해드렸고 다음 포스팅에서 타통신사 테마이식 방법 설명해드릴께요.

강좌가 너무 늦어져서 죄송합니다.^^


그럼 모두들 용기 내셔서 좋은 테마포팅과 제작해 보세요^^





이상으로   포스팅을 마치도록하겠습니다.





포스팅 내용이 유익하셨다면 아래 ViewOn버튼 꾹 눌러주시고 

응원의 댓글 부탁드립니다.^^


조금이나마 테마작업하는데 도움이 되어드리고자 포스팅 하고 있는  Azdesign™ 입니다.^^






* 필  독 *

- 블로그내 모든 포스팅 내용 도용 및 2차배포는 금지합니다. -

루팅관련 자료 사용으로 인한 소프트웨어,하드웨어 오류에 대한 책임은 전적으로 본인에게 있습니다.

(항상 자료 사용하시기 전에 백업을 필수로 해주시고 자신의 기종과펌웨어 버젼을 확인하세요)



저작자 표시 비영리 변경 금지
신고


azdesign™ ☆ 테마제작관련 ☆/ 테마이식강좌 , , , , , ,



  1. Blog Icon
    텔미고

    뷰온 꾸~욱~! 하고 갑니다. 디쟌님 즐거운하루되시길 바랍니다.

  2. 앗 텔미고님~~ 100년만인거 같습니다.^^ 감사합니다.^^

  3. Blog Icon
    차칸남자

    안녕하세요 디쟌님~^^
    정말 좋고 소중한 정보 감사합니다 이미지이식도 정말 고마웠습니다.^^ㅋㅋ
    모든 사람들이 보면 이해하기 쉽겠어요~ㅋㅋ
    근데 xml비교해서 보는도중에 어디서어디까지 바꺼야하는지..그런게 초보들한테는 힘든것같아요 저를 비롯해서...xml을 비교해서 틀린부분을 다 고치면 타기기랑 xml자체가 모두 똑같아 지자나요..그럼 오류가 나던데..이부분을 공부해야하는데..정말..ㅜ.ㅡ
    좋은 정보감사합니다!!^^

  4. 그런 부분을 한번에 설명하기가 힘들어서 앞으로 제가 이식하는 작업순서를 하나하나 올려드릴 생각입니다. 이게 한번에 되는게 아니라 제 이식과정을 보시면 조금은 이해를 하실 수 있을겁니다.^^

  5. Blog Icon
    차칸남자

    제가 글을 적고보니 말이 좀 이상하네요..디쟌님께서 시간을 내어서 이렇게 소중한 정보를 가르쳐주시는데...말이 좀 기분상하게해드릴수도??있다고생각되네요...죄송합니다!
    유익한 글들 감사합니다^^

  6. 죄송하다뇨?? 저도 포스팅하면서 사실 이걸로는 조금 부족한데..라는생각을 하면서 썼지만 한번에 모든 내용을 담은 포스팅은 사실 불가능하더라고요. 그래서 기본적인 개념부터 소개해드린겁니다. 기분상할일 전혀없습니다. 걱정하지 마세요^^

  7. Blog Icon
    한별

    디자인님 안녕하세요 ^^
    8시쯤 글 남겨 놓다가 인터넷 접속오류로 야금야금 다 먹고... 다시 덧글 남깁니다.

    하루의 시작과 마무리를 디자인님 블로그와 맛클에서 구경을 하고 있습니다.

    배워보고 싶은건 많은데
    뭐부터 배워야 할지 ^^;;

    오늘도 웃는 일만 가득한 하루 되세요 ^^

  8. ㅎㅎ 한별님은 이제 천천히 배우셔도 될거 같아요^^
    항상 도움주시는 한별님 건강꼭 챙기세요^^ 감사합니다.

  9. Blog Icon
    sonic77

    한눈에 쏙쏙~!
    감사합니다 디자인님 항상 많이 배워갑니다 ^^
    오늘하루도 즐겁고 행복한 하루보내세용~

  10. Blog Icon
    한별

    소닉님은 더 배우실게 없을거 같은데... ^^;;
    웃는 일만 가득한 목요일 되세요 ^^

  11. ㅋㅋㅋ 소닉님 달려오셨네요. 소닉님은 배우실게 없습니다.
    소닉님은 이제 지식나눔을 해주실 단계입니다.
    소닉님도 오늘 하루 즐겁고 행복한 하루 되세요^^

  12. 와우 정말 깔끔하게 정리가 잘 되어있네요! 처음 접하시는 분들도 그냥 따라하기만 하면 될 것 같습니다!
    좋은 글 잘 보고 갑니다^^

  13. Blog Icon
    GaonNuri

    강좌 잘 봤습니다.
    실례지만 질문이 있는데요...
    디컴파일후에 컴파일할때 오류나는걸 방지하려고
    추가된 이미지와 xml 파일을 다 복사해서 순정쪽으로 미리 넣어놨는데
    그럼 그 파일을 컴파일시에 소스 수정한 파일과 같이 기억해서 다시 복사해서 넣어줘야 하는건가요?
    그리고 왜 컴파일후에 바로 그 생성된 apk를 쓰지 않고 구지 순정에 수정된것만 복사해서 넣는건가요?

  14. 컴파일하신 후에 추가된 파일을 따로 넣어주셔야하고, 바로 사용하지 못하는이유는 컴파일시 시스템앱으로 등록해서 적용하면 오류가 나기 때문에 시스템앱으로 컴파일하지 않고 수정된 부분만 순정apk에 넣어주는 겁니다.

  15. Blog Icon
    JJ

    제가상단바를 아이폰처럼만들고싶은데 시계는 강좌가있어서햇는데 시그널하고데이터는어떻게해야하는지좀가르쳐주세요...

  16. 그부분은 저도 테스트를 해봐야하는 부분이라 지금 바로 알려드리기는 힘들겠네요. 근데 어차피 레이아웃 순서만 바꿔주는건데 중앙시계를 하셨더마녀 구조를 조금 알게 되었을 텐데 한번 바꿔가면서 테스트 해보세요^^
    아이폰 상단바는 확인해보고 강좌로 알려드릴께요.

  17. Blog Icon
    JJ

    음그게.. 제가 중앙상단바한뒤로 지금3일째 시그널옮기는거에 연연하고있네요.. 어떤방법을써봐도.. 심지허 시그널하고 와이파이데이터두개 아이콘을겹치려햇는데 -11.5dip이거해도 꿈적하지않고 가만히있네요..
    참고로 갤럭시S3LTE 유플러스입니다

  18. Blog Icon
    soonseon

    안녕하세요 중학생 입니다.. 이번강좌잘봣습니다ㅎㅎ 이번 강좌는 kt skt 로 이식하는거죠? 제가 다음에실력이된다면 옵쥐나 옵쥐프로를 갤투에 꼭이식하고싶어서요ㅠㅠ 이번강좌랑 타기기이식이랑 상관이없는거같지만 많이보고 많이배워가요 감사합니다ㅎㅎ

  19. 예를들면 제가갤s3kt인데 갤럭시s3 lg기종의 통합테마인것을 이 강좌를보고 하면 제폰에 이식할수있는건가요?

  20. Blog Icon
    아스피린

    안녕하세요, 너무 잘 봤습니다.public.xml <-- 이것으로 검색하다 보게되었는데요
    아펙스 테마를 리팩 하려하는데 그쪽에는 public.xml 에 보면
    <public type="drawable" name="wallpaper_escape" id="0x7f020214" />

    이런식으로 drawable 폴더 내의 것들이 id 가 지정되었더라고요
    여기서 쓰신글을 보니
    -
    소스(xml) 수정부분은 layout과 Value쪽을 보시면 됩니다. 달라진 xml을 이제 같게 수정을 해주시면 됩니다.
    (이 때 values폴더 안에 public.xml 일단 무시하고 진행하세요. 파일 내 Id는 컴파일작업 시 생성됩니다.)
    -
    이런 내용이 있더라고요
    다른 내용들도 검색을 해보니
    http://don-forget.blogspot.kr/2012/02/publicxml.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+-Happyzen+(%ED%96%89%EB%B3%B5%ED%95%9C+%EC%82%AC%EB%9E%8C+-+happyzen%EC%9D%98+%EB%B9%84%EB%A7%9D%EB%A1%9D)

    이글을 보시면 R.java 에 기입된다고 하네요

    디컴파일한 smali 폴더에 보면 R$drawable.smali <-- 이파일에
    .field public static final adblock:I = 0x7f020000
    이런식으로 또 적혀 있네요


    -

    제가 하려는 것이
    drawable 폴더에 다른 것들을 새로 바꾸고, 또한 기존에 없던 것을 추가하려 함인데
    그럴 경우 public.xml 에 추가분을 기입을 해주어야 하는 것 같은데
    기입후 id 값을 어찌써줘야 하는지 잘모르겠어요


    혹시 이런 부분에 대하여 아시는 것이 있으면 고견을 부탁드립니다.
    (글을 두서 없이 적어서 죄송합니다 ㅠㅠ)

  21. 스트링을 추가하고 컴파일하시면 자동으로 id가생성됩니다.

  22. Blog Icon
    아스피린

    답변 감사합니다. 여러 시도를 해봐야겠네요 ㅎㅎ
    좋은글도 감사합니다.

  23. 감사합니다^^

  24. Blog Icon
    플라잉

    디쟌님 다음포스팅으로 다른통신사 이식하는거
    올려주신다고 하셨는데...계획이 있으신가요?
    디쟌님꺼 매번 잘쓰고 있습니다. 요즘 파파님이
    노트1 작업하셨던거중에 푸르뎅뎅 그걸 한번 이식
    해보고 싶어서 디쟌님 강좌를 열심히보면서 공부중
    인데 혹시 계획이 있으신가해서요?!

  25. Blog Icon
    사랑비

    beyond compare 프로그램으로 PC에서 XML 파일 수정후에 그냥 핸펀으로 옮겨서 덮어씌우면 되는건가요?
    feature.xml 파일을 수정하고싶은데요..어제 수정했다가 벽돌이 되서...

    feature.xml 이파일에 accuweather 이문구만 kweather로 바꾸고싶은데...
    디자인님 제너럴롬에 보니..내부엔 케이웨더 날씨웹인데 저기에는 어큐웨더로 되어잇네요..

    어떻게 수정해서 넣으면 되는건가요?

    헉 위 프로그램으로 수정해서 저장해서 644주거 넣었는데 또 부팅이 안되네요..삼성로그뜨고 그담에 진행이 안되네요..에휴


티스토리 툴바