EXODUS_Q™
14.01.16
조회 수 4399
추천 수 19
댓글 14

"테마사"분들이야 [컴파일]쯤은 누워서 오징어 뒷다리 뜯는 정도겠지만...


난생 처음 [스마트폰 테마]를 본인이 원하는 스타일대로 손수 작업하시려는 분들한테는


xml이나 smali 자체가 듣도 보도 못한 낯선 외계어일겁니다.(저도 처음엔 그랬으니까요..ㅎ)


그런 분들이 테마 작업하시다가 컴파일_"21오류"땜에 답답해서 미쳐버릴 지경에 이르지 않도록


"컴파일"과정도 간략하게 적어볼까 합니다.
(혹시, 제가 쓴 내용과는 다른 방식의 컴파일이 있다면..가차없이 지적이나 댓글로 적어주시면 감사하겠습니다.)


 


[중요:모든 테마작업을 하기전에는, 반드시 "정상적으로 사용중인 파일"을 백업부터 해두세요~!!!


 


 


 


 


1.가장 먼저, 디컴파일된 원본파일은 반드시 [백업]해두세요.(컴파일 오류시에 아주 유용하게 쓰입니다.)


 


 


2.디컴파일된 파일의 xml이나 smali 수정할때는, (엥간하면)notepad++ 를 사용하세요. 그리고 모든 xml 이나 smali를 수정하고난후에는, 반드시 notepad++창의 왼쪽 위에 있는 [파일_저장]을 선택하여 저장한뒤 notepad++창을 닫으세요.


 


 


3.xml 이나 smali는 단 하나의 글자나 숫자가 틀려도 컴파일이 안됩니다."신중에 신중을 기해서"작업하시기 바랍니다.


 


 


4.어쨌거나 저쨌거나 수정작업이 다 끝났으면.....


 


 


5.디컴파일할때와 마찬가지로 일단, APKmanager<Script.bat를 여세요.


 


 


6."22번" 입력 엔터.


 


 


7.컴파일 하고자하는 파일 선택후 엔터.


 


 


8."11번"입력 엔터.


 


 


9.컴파일 과정이 진행됩니다.


 


 


10.컴파일이 정상적으로 완료되면 마지막에 system파일이냐고 묻는 글자가 나타납니다.이때 반드시 "n"을 입력하고 엔터 치세요.


 


 


11.컴파일이 다 끝나면, [APKmanager<place-apk-here-for-modding]폴더에 컴파일된 "Unsigned"글자가 앞에 붙은 파일이 생성됩니다.(Unsigned 글자가 앞에 붙은 파일을 이름만 바꿔서 그대로 폰에 넣으면 안됩니다.예를 들어_컴파일이 완료된UnsignedSystemUI.apk파일을 아무 작업도 없이 그냥 SystemUI.apk 이렇게 이름만 바꿔서 폰에 집어넣을 경우..."상단바가 실종됩니다.!!!")


 


 


12.이제 여기서 "폰에 넣을 apk파일을 만드는" 두가지 방법을 소개합니다.


 


[첫번째 방법]


 


1.먼저, 현재 본인이 사용중인 펌웨어(ROM)에 있는 [원본_apk파일]을 컴퓨터에 별도로 미리 준비하여 파일 이름을 SystemUI.zip으로 바꾼뒤 압축을 풀어주세요..(편의상 SystemUI.apk를 예로 들겠습니다.)


 


2.그 다음, 컴파일이 완료된 UnsignedSystemUI.apk도 UnsignedSystemUI.zip으로 이름을 바꿔 압축을 풀어주세요.


 


3.여기서, 1번에서 설명한 (압축을 푼)원본_SystemUI.apk파일속에 있는 [META-INF]폴더와 [AndroidManifest.xm] 파일을 복사하여, 2번에서 설명한 (압축을 푼)UnsignedSystemUI 안에 집어넣으세요.(딴거 건드리지 마세요~!!!)


 


4.이제, 원본_SystemUI.apk파일은 별 쓸모가 없으니 삭제하든지 별도로 보관하든지 하시면 됩니다.


 


5.3번에서 설명한대로 원본파일의 META-INF 폴더와 AndroidMenifest.xml 파일을 붙여넣은 UnsignedSystemUI를 아무것도 건드리지 마시고 다시 압축하세요.(압축할때는, 그냥 "UnsignedSystemUI.zip 으로 압축하기"이렇게 하면 됩니다.)


 


6.압축한 UnsignedSystemUI.zip을 UnsignedSystemUI.apk 로 이름을 바꾼뒤 최종적으로 SystemUI.apk로 이름을 바꿔주세요.


 


7.이제,SytemUI.apk 파일을 폰에 넣으면 됩니다.(반드시 SystemUI.apk파일을 폰의 system경로에 이동시켜 퍼미션 644주고 system_app경로에 넣은후 재부팅 하세요.)


 


# 이 방법은 이전에 "짱구삼촌"님께서 올리셨던 방법인데, 제가 현재 실제 사용중인 방법이기도 합니다.(적극 추천합니다.!!)


xml이나 smali수정작업한 내용물을 일일이 찾아 원본파일에 복붙하는게 아니라, META-INF 와 AndroidMenifest.xml파일을 UnsignedSystemUI.apk에 넣어줌으로써 작업이 끝납니다.아주 간단하죠~^^


 


 


 


[두번째 방법]


 


1.먼저, 현재 본인이 사용중인 펌웨어(ROM)에 있는 [원본_apk파일]을 컴퓨터에 별도로 미리 준비하여 파일 이름을 SystemUI.zip으로 바꾼뒤 압축 풀지말고 [7zip]을 이용하여 "압축파일 열기"하여 창을 하나 띄우세요.


 


2.그 다음, 컴파일이 완료된 UnsignedSystemUI.apk도 UnsignedSystemUI.zip으로 이름을 바꾼뒤 압축 풀지말고 [7zip]을 이용하여 "압축파일 열기"하여 창을 하나 띄우세요.


 


3.[7zip]을 이용한 두개의 창이 열려있는 상태에서...


 


4.먼저, 컴파일이 완료된 UnsignedSystemUI 에서 res<layout경로로 들어가 수정작업한 xml을 몽땅 다 찾아 [원본_SystemUI]안의 똑같은 경로에 붙여넣기(덮어씌우기) 하세요.(여기서 대부분 "드래그"를 이용하여 작업합니다.)


 


#만약에, res<layout 경로가 아닌 res<values경로에서 뭔가를 작업하셨다면, 컴파일된 파일안에는 values라는 폴더가 없고[resources.arsc] 라는 파일이 있는데, 그 파일안에 res<values 경로에서 작업한 내용물이 다 들어있습니다.이 resources.arsc를 [폰에 넣을 원본_SystemUI]안에 집어넣으면 됩니다.


 


#또한, smali 경로에서 뭔가를 작업했을때도 컴파일 하면 smali 라는 폴더는 없고 [classes.dex]라는 파일이 있는데, 이 파일안에 smali 내용물이 다 들어있으니까 그걸 집어넣어주면 됩니다.


 


5.4번 작업이 끝났으면, 이제 열려있는 원본_SystemUI의 7zip창의 왼쪽 위에 있는 "끝내기"를 선택하여 창을 닫으세요.


 


6.이제 컴파일된 UnsignedSystemUI.zip파일은 필요없습니다.버리든지 보관하든지 하세요.(첫번째 방법과 반대..)


 


7.이렇게해서 수정작업한 내용물이 옮겨진 SystemUI.zip을 다시 SystemUI.apk로 이름을 바꾸세요.


 


8.SytemUI.apk 파일을 이제 폰에 넣으면 됩니다.(반드시 SystemUI.apk파일을 폰의 system경로에 이동시켜 퍼미션 644주고 system_app경로에 넣은후 재부팅 하세요.)


 


 


 


이상입니다.


혹시, 제 글 내용중에 잘못된 부분이나 추가수정할 내용이 있으면 댓글로 남겨주시면 감사하겠습니다

EXODUS_Q™ 님의 SIGNATURE

profile
Just Do It.
댓글 14
  • ?
    갤3 LTE
    14.01.16
    좋은글 감사합니다 [2.2.4/E210SKSJMH3/4.1.2]
  • ?
    artistas
    14.01.16
    그래도 어려워요 T.T [2.2.4/E210KKKJMD2/4.1.2]
  • ?
    Sparky.M
    14.01.16
    엑소더스님께서 컴파일까지 강좌 올려 주셨군요! 감사합니닷! [2.2.4/M250SKSJME2/4.1.2]
  • profile
    전 phyb 님께 배웠습니다 ㅋ http://www.matcl.com/?c=83/85&where=subject%7Ctag&keyword=1.3&uid=212064 이거 만들고 이젠 클릭만으로 해결합니다. 무지 쉬워졌습니다. ㅋ
  • ?
    3L
    14.01.17
    감사합니다.
  • profile
    아차~...아직 이걸 안해봤네요@_@ [2.2.4/M250SKSJME2/4.1.2]
  • ?
    감사합니다
  • ?
    저도 본격적으로 루팅가야되나 고민되네요^^ 좋은 하루되셔요~~✌
  • ?
    감사합니다.^^
  • ?
    15 추천수 돌파 축하드려요!!
  • ?
    첫번째 방법 같은 경우도.. 두번째 방법과 같은 맥락으로 이용할수 있습니다. 굳이 압축해제를 하지않고 apk파일을 연결프로그램 알집으로 하여 실행하시면 압축 창이 나옵니다. 원본 apk 파일 창 / unsigned apk 파일 창 이렇게 두개를 띄워놓으시고. 원본 apk파일에 있는 [META-INF]폴더와 [AndroidManifest.xml]파일을 드래그 하신후 unsigned apk 파일창에 드롭 하시면 팝업창이 뜹니다. 현재파일에 추가하기 누르신후 덮어쓰기 하시는 방법도...ㅎㅎ
  • ?
    알폰소
    14.01.19
    감사합니다..도움많이되었습니다...프윅투척후..오류발생하면..tw프윅을..투척하니..해결되서..디컴이되더라구요...감사해요..
  • ?
    복잡한 방법을 사용하시는것 같습니다. apkmanager 5.7 기준으로 제가 다시 요약해 드릴께요. 시스템 apk 는 내부 퍼미션 관계가 있어서 기존의 서명키를 그대로 사용해야 합니다. 그래서 원본 apk에서 서명 폴더를 apk 에 그대로 사용해야 부팅시 정상 apk 로 인식합니다. 22번 프로젝트를 선택하고 9번 디컴파일하고 수정 작업하시고 11번 컴파일하시려고 누르면 시스템 apk 냐고 묻습니다. 이때 y를 입력하고 컴파일이 성공하시면 unsignedSystemUI.apk 가 만들어집니다. 이것이 끝입니다. y를 누르면 원본 서명을 복재하여 apk 포함됩니다. unsignedSystemUI. apk 의 명칭을 SystemUI.apk 로 이름을 변경하여 시스템에 투척하시면 됩니다. 설치용 일반 apk는 n 을 선택하고 테스트키 서명을 넣기 위해 사인을 꼭 해줘야 합니다. 시스템 apk 나고 물어 보는 이유를 잘못 이해하신 것 같습니다. 부팅시 로드되는 시스템 apk는 서명 폴더가 단말기 기기의 서명과 일치해야 시스템 관련 부분을 엑세스하는 퍼미션이 열립니다. 설치하는 apk와 다르죠. 일반 테스트키 서명을 넣어도 되는데 시스템 apk 중에 특수한 영역에 엑세스해야하는 부분의 퍼미션이 포함된 경우는 꼭 원본 서명을 해줘야 단말기 빌드 서명과 일치해서 접근이 가능한 겁니다. 일반 서명을해서 문제가 되는 이유가 바로 여기서 발생하는 거랍니다. 그러나 SystemUI.apk 같은게 아닌 시스템 퍼미션을 사용하지 않는 시스템 apk 는 일반 테스트키 서명을 사용하셔도 상관없습니다.
  • ?
    예전에 삼성 S번역기 시스템 앱을 설치용으로 포팅하는 원리도 여기서 출발하는 겁니다. 한마디로 시스템 퍼미션은 단말기 빌드 서명과 일치해야 열립니다. 이 시스템 퍼미션은 수퍼유저 같은 겁니다. 이걸 일반 퍼미션으로 변경하고 앱에서 사용한 퍼미션들을 일일이 지정해 주면 설치용으로 포팅이 가능합니다. 그런데 시스템 서명에서만 열리는 루틴은 지정할 수 없는 퍼미션 부분은 코드를 제거하여 오류를 막고 등등 그리고 일반 서명키를 넣어 설치용으로 포팅이 되는 겁니다. 그런데 이런 시스템 서명 사용하지 않는 앱들이 더 많습니다. 이런건 그냥 서명만 하셔도 설치용이 됩니다.
댓글 쓰기 권한이 없습니다.
최신순 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2