[APK Manager] Compile & Decompile 강좌 #1

2012.10.26 19:31





[APK Manager] Compile & Decompile





안녕하세요 Azdesign입니다.

이번시간에는 Apk manager이용한 compile & decompile 방법에 대하여 포스팅 하도록 하겠습니다.

(부제 : 상단바 시계색상 바꾸기)






아무래도 테마제작하면서 누구보다 apk manager를 많이 사용해 본 사람들 중 한명이라고 생각하고 있지만...^^;

결론은 누구보다 apk사용법을 테마제작에 필요한 부분만 찍어서 설명해드릴 수 있을 거 같습니다.^^



우선 강좌에 앞서서..  apk 용어부터



APK란??

안드로이드 애플리케이션의 확장자로, Application PacKage의 줄인말입니다.

안드로이드의 구동을 위한 어플리케이션 패키지..

그래서 이 apk를 수정하기위해서는 apk manager가 필요한겁니다.

(JPG라는 이미지를 편집할때 그림판이나 포토샵이 필요하듯이)


Apk manager를 이용해 

apk 디컴파일==>관련 xml수정==>apk 컴파일 과정을 거치게 됩니다.




왜 이과정을 거처야하나라는 질문은..  아래스샷을 비교해주세요


압축프로그램으로 apk를 풀어서 res/layout/alert_dialog_progress_holo.xml 쪽을 보면 아래 스샷처럼 알 수 없는 외계어로 변환됩니다.

저희가 판독할 수 없는 언어죠... @@



하지만 

APK로 디컴파일 해서 같은 화일을 열어보면~~~짜잔~~^^ 

정확히는 모르지만 그래도 알아볼 수 있는 언어들이 나옵니다. 그래서

이미지 수정만 한다면 디컴파일 할 필요는 없지만 소스를 통해 

이번시간에는 Apk manager이용한 compile & decompile 방법에 대하여 포스팅 하도록 하겠습니다.



각설하고 오늘은 간단히 APK사용법에 대해서 설명해드릴께요

APK설명하면서 시계색상을 한번 바꿔보겠습니다. apk manager사용법만 숙지하면 어플/위젯/카카오톡 등 어플을 자기취향대로

수정할 수 가 있습니다. (카카오톡은 다른방법으로도 테마제작이 가능합니다. 그건 추후에 리팩강좌에서^^)


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

준비물

1) 우선 자바가 설치되어 있어야합니다. 안되어 있다면 아래 링크 강좌로~~

http://azdesigntm.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%84%A4%EC%B9%98-%ED%85%8C%EB%A7%88-%EC%A0%9C%EC%9E%91%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0


2) decompile할 SystemUI.apk (추가로 그 펌웨워에 맞는 framework.apk / tw-framwork.apk)

   - 실습할 갤럭시 노트 UH24 vsersion apk 첨부해드립니다. -

uh24_source.vol1.egg


uh24_source.vol2.egg


3) Apk manager (아래첨부된 Apk_manager_5.0.2.zip 다운로드)


Apk_Manager_5.0.2_Azdesign.zip



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


1. 우선 첨부 된 uh24_sourceapk manager 다운로드 받아주세요

2. Apk manager_5.0.2 압축을 풀어서 드라이브 최상위 폴더 (C:, D:... 로 보내주세요.)

   압축폴더 내를 확인해보면 아래처럼 되어있습니다.


작업하면서 주로 사용되어지는 폴더는 위에 modding & projects 2개의 폴더와 Script.bat 실행화일입니다.



3. 압축푼 uh24_source.egg압축화일을 풀어나 나온 3개의 apk화일을 아래와같이 place-apk-here-for-modding폴더에 넣어주세요



4. Apk_Manager_5.0.2폴더로 이동해서 Script.bat 더블클릭해서 실행해 주세요


5. 아래스샷 처럼 윈도우 창이 나오게됩니다.

보기엔 무척 부담드러운 화면이 이지만 저희가 사용할 건 (9,11, 22번) 3개를 주로 사용하게되니 부담갖지 마세요^^

간단하게 설명하면


9번 : Decompile.apk  ==> apk 를 디컴파일해서 수정가능케 하는 명령어

11번 : Compile 디컴파일해서 수정된 화일을 다시 apk화일로 컴파일 하는 명령어

22번 : 프로젝트관련 apk를 선택할때 사용. 여러개의 프로젝트가 있게 되면 그중 하나를 선택해야 하는 기능입니다.


6. 우선 시계색상을 변경하는 강좌로 apk manager 강좌를 설명하니 우선 상단 시계색상을 담당하고 있는 

   SystemUI.apk를 선택해야겠죠 ??  apk를 선택하겠습니다.

   숫자패드 2를 두번 눌러주세요~~~ 22


7. 아래와 같이 place-apk-here-for-modding에 넣어두었던 3개의 apk 가 보입니다. 그중 SystemUI.apk를 

    선택해야하니 2번에 위치해 있네요.. 숫자패드 2번을 눌러주세요


7. 아래와 같이 Current-App : SystemUI.apk 가 선택되어진걸 확인 할 수 있습니다.

    이젠 systemUI를 디컴파 해야하니 9번을 눌러주세요



7. 아래와 같이 Current-App : SystemUI.apk 가 선택되어진걸 확인 할 수 있습니다.

    이젠 systemUI를 디컴파 해야하니 9번을 눌러주세요


* 이부분에서 오류가 난다면 아래링크로 가서 apk세팅 작업을 해주세요

http://azdesigntm.tistory.com/entry/apk-manager-%EB%94%94%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95




8. 9번을 눌러 Decompile이 완료되면 다시 초기화면나오게 됩니다. 

   Apk_Manager_5.0.2_Azdesign\projects\SystemUI.apk\res 폴더안을 보시면~~~ 아래 처럼 많은 폴더가 생성되어졌습니다.


9. 그럼 시계 관련 색상 수정을 한번 해볼까요??

    projects\SystemUI.apk\res\values\styles.xml 경로에 있는 Style.xml을 선택하고 우클릭 편집눌러주세요.

   * 연결프로그램을 메모장으로 설정해주시면 되는데.. 개인적으로는 notepad++ 을 추천합니다.



10. 시계색상 관련 값을 수정해 줍니다.

      ctr+f를 눌러서 "TextAppearance.StatusBar.Clock" 를 검색해 주세요


빨간 박스부분이 상단바 시계에 관련된 소스값입니다.  이부분에서 사이즈, style, 색상을 수정할 수 있습니다.
전 ICS색상값인 #ff36b7e7으로 수정해볼께요

색상코드값 강좌 참조


1) 수정 전
    <style name="TextAppearance.StatusBar.Clock" parent="@android:style/TextAppearance.StatusBar.Icon">
        <item name="android:textSize">16.0dip</item>
        <item name="android:textStyle">normal</item>
        <item name="android:textColor">#ffbebebe</item>
    </style>

1) 수정 후
    <style name="TextAppearance.StatusBar.Clock" parent="@android:style/TextAppearance.StatusBar.Icon">
        <item name="android:textSize">16.0dip</item>
        <item name="android:textStyle">normal</item>
        <item name="android:textColor">#ff36b7e7</item>
    </style>

11. 수정이 완료 되면 파일==>저장 (ctr+s) 를 눌러주시고 이미 오픈되어있다면 명령어 11번 Compile 눌러주세요
      (혹시 창을 닫으셨다면 Script.bat 더블클릭 + 22번 + systemUI.apk를 다시 선택해 주세요)


12. 컴파일이 진행됩니다. 일정시간이 지난 후 (짧게는 몇초 길게는 2-3분) 아래화면이 나오며 "N" 을 선택해주십니다.


13. 그러면 초기화면으로 돌아옵니다. 수정된 값이 적용된 화일(unsignedSystemUI.apk) 아래폴더에 생겼습니다.
     C:\Apk_Manager_5.0.2_Azdesign\place-apk-here-for-modding\unsignedSystemUI.apk 



14. 이젠 원본화일 SystemUI.apk 수정 된 unsignedSystemUI.apk에서 추출해서 덮어 씌워주시면 됩니다.
     


여기서 부터는 각자 편한대로 하는 방법이 다 틀리겠지만 제가 하는 방식으로 알려드리겠습니다.

1) place-apk-here-for-modding폴더 안에 새 폴더를 하나 만듭니다.  [폴더명 임의로] 전 azsystemui 폴더

2) place-apk-here-for-modding폴더 안에 SystemUI.apk, unsignedSystemUI.apk 복사해서 azsystemui폴더에 복사

3) unsignedSystemUI.apk 우클릭 열기(알집)


4) Drag & Drop으로 resources.arsc 화일을 azsystemui폴너 내로 꺼내 놓습니다.

  * resources.arsc 화일안에는 저희가 수정한 Value/style.xml값에대한 정보가 들어있습니다.

     다음강좌에서 조금더 자세히 설명해 드리겠습니다.




5) unsignedSystemUI.apk  알집을 닫아주세요

   아래 화면처럼 시계색상 코드값을 갖고 있는 resources.arsc 를 빼 내왔습니다.

   이젠 SytemUI.apk에 엎어 씌워주시면 끝입니다.



6) SystemUI.apk을 선택 ==> 우클릭 ==> 열기(알집) 상태로 들어가주세요

   그상태에서 추출된 resources.arsc 화일을 덮어 씌워주세요   


7) 현재 화일에 추가 하기 선택



7) 덮어쓰기 선택 선택하면 덮어씌워집니다. 그리고 Systemui.apk  알집을 닫아주세요




휴~~ 이제모든 작업이 끝났습니다. 이젠 수정된 SystemUI.apk를 루익/테그라크 폴더를 이용해서 system/app경로에 
넣고 리부팅/리커버리 적용하면~~ 


짜잔~~ 아래와 같이 시계색상이 변한걸 확인할 수 있습니다.


이런 상단바 흰색 시계색상이




이런 ICS색상의 시계로 변신했습니다 ^^




무지 복잡해 보이지요?? 그런데..몇 번 해보시다보면 무의식중에 자기도 모르게 손쉽게 이런작업을 할 수 있습니다.

자신감을 갖고 한번씩 도전해 보세요~~~

항상 원본백업을 필수 인거 아시죠?? ^^






이상으로 Apk manager이용한 compile & decompile 방법에 대하여 포스팅을 마치도록 하겠습니다.


 


 포스팅 내용이 조금이라도 도움이 되셨다면 아래 손가락 View On 손가락 한번 꾸욱~~ 눌러주세요^^


댓글 추천은 저에게 큰 힘이 됩니다 포스팅 내용 도용 및 2차 배포는 금지합니다.



저작자 표시 비영리 동일 조건 변경 허락
신고


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



  1. Blog Icon
    이정주

    감사합니다!

    http://blog.naver.com/jungju1221/10151892684

    변경 성공했어용!

  2. Blog Icon
    맨날온다

    아 오늘부터 맨날 오겠음. 도전해볼게여 업뎃자주해주세요!

  3. Blog Icon
    루팅꿈나무

    강좌#1인데 #2는 없나요? ㅠㅠ 차근차근해보려고하는데 더 진행이 안되네요 ㅠㅠ 바쁘신거 같아서 질문만 할게요. xml파일을 만지면 전부다 resource 파일만 옮기면 되는건가요?

    여튼 정말 좋은글들 감사합니다 ㅠ 계속 들러서 보고있어요

  4. Le parquet de Courtrai en Belgique (sud-ouest) a annoncé lundi avoir ouvert une enquête à la suite d'un témoignage faisant état d'abus sexuels à l'encontre d'enfants dans un établissement scolaire de la ville géré par des nonnes, http://www.moncleroutletespain.com/ moncler chaquetas. L'enquête a été ouverte à la suite d'un "témoignage anonyme" faisant état d'abus dans les années 1965 à 1970 dans l'institut Stella Maris, http://www.moncleroutletespain.com/ http://www.moncleroutletespain.com/, a indiqué à l'AFP une porte-parole du parquet, http://www.moncleroutletespain.com/ moncler online.Related articles:


    http://marshmallow1975.tistory.com/20 http://marshmallow1975.tistory.com/20

    http://yashasi.tistory.com/608 http://yashasi.tistory.com/608

  5. Blog Icon
    쿤투

    흐음... 저는 framework-res.apk 디컴파일은 됩니다만 컴파일이 오류가나네요. 혹시 로그확인좀 부탁드려도 될런지...

    참고로 순정 framework-res 디컴파일한뒤 수정안하고 바로 컴파일했을때 나는 오류입니다.

    java version "1.7.0_10"
    Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
    Java HotSpot(TM) Client VM (build 23.6-b04, mixed mode, sharing)
    W: Could not find sources
    I: Checking whether resources has changed...
    I: Building resources...
    aapt: warning: string 'gps_assisted_data_download' has no default translation in D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res; found: ko
    aapt: warning: string 'policydesc_allow_htmlemail' has no default translation in D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res; found: en_US
    aapt: warning: string 'policylab_allow_htmlemail' has no default translation in D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res; found: en_US
    aapt: warning: string 'wifi_p2p_pbc_go_negotiation_request_message' has no default translation in D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res; found: en_GB es pt tl
    aapt: warning: string 'wifi_p2p_pin_display_message' has no default translation in D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res; found: en_GB es pt tl
    aapt: warning: string 'wifi_p2p_pin_go_negotiation_request_message' has no default translation in D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res; found: en_GB es pt tl
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values\plurals.xml:79: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values\plurals.xml:79: error: Found tag </item> where </plurals> is expected
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-en-rGB\plurals.xml:79: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-en-rGB\plurals.xml:79: error: Found tag </item> where </plurals> is expected
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-en-rUS\plurals.xml:79: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-en-rUS\plurals.xml:79: error: Found tag </item> where </plurals> is expected
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-es\plurals.xml:79: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-es\plurals.xml:79: error: Found tag </item> where </plurals> is expected
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-pt\plurals.xml:79: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-pt\plurals.xml:79: error: Found tag </item> where </plurals> is expected
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-tl\plurals.xml:79: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
    D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res\values-tl\plurals.xml:79: error: Found tag </item> where </plurals> is expected
    Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL3674757543377601469.tmp, -x, -S, D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res, -M, D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\AndroidManifest.xml]
    at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:193)
    at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
    at brut.androlib.Androlib.buildResources(Androlib.java:248)
    at brut.androlib.Androlib.build(Androlib.java:171)
    at brut.androlib.Androlib.build(Androlib.java:154)
    at brut.apktool.Main.cmdBuild(Main.java:182)
    at brut.apktool.Main.main(Main.java:67)
    Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL3674757543377601469.tmp, -x, -S, D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\res, -M, D:\Phone Theme Files\Apk Manager 5.0.2 ICS\other\..\projects\framework-res.apk\AndroidManifest.xml]
    at brut.util.OS.exec(OS.java:83)
    at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:191)
    ... 6 more

  6. Blog Icon
    쿤투

    컴파일문제 해결되었습니다~
    Apktool.jar 공식사이트에서 현재 최신버전으로 덮어씌운후 하니 잘되네요.

  7. Blog Icon
    ㅇㅇ

    자바말고 c로 디컴파일은 어떻게
    하죠?

  8. Blog Icon
    speecion

    감사합니다.
    왼쪽 %배터리 색상은 어디서 변경하나요?

  9. Blog Icon
    speecion

    갤투 정식빈인데 색상코드써도 그대로네요ㅠ

  10. Blog Icon
    kt3694

    자세한 강좌 감사드립니다.
    계속 헤매었는 데 이제 조금씩 눈이 떠지는 거 같네요
    감사드립니다.
    근데 질문 드린다면
    디컴파일 해서 여러개 파일을 수정을 해도
    resource 파일만 알집으로 열어서 덮어씌우기 해도 되나요?
    아님 파일이 여러개 수정했으면 다르게 하는 게 잇나요?

  11. Blog Icon
    한별

    디자인님 안녕하세요 ^^
    디컴파일시 오류났을때 나는 링크가 삭제되어서 ^^;; 어찌 확인을 해야 할까요?^^;;

    C:\apk_manager_5.1_SNAPSHOT_windows 에 깔아놓은 상태이며,

    C:\apk_manager_5.1_SNAPSHOT_windows\place-apk-here-for-modding 에

    framework-res.apk, systemui.apk, twframework-res.apk 복사하여
    script를 실행하여, framework-res.apk와 twframework-res.apk는 디컴파일 되어
    초기화면으로 나오는데, 이상하게 systemui.apk만 안되더라구요 ^^;;

    쉬시는 시간에 번거롭게 해드려 지성합니다 ^^;

    검색으로 찾아보니 10번으로 들어가서 framework-res.apk 위치를 저장해 주면 되는군요. 감사합니다 ^^

    시간날때마다 아주 조금씩 배워보겠습니다 ^^;;
    폰에 적용은 안해봤지만, 따라하기 했으니 잘 될거라 믿어봅니다. ^^;;

    편히 쉬시고, 내일 뵙겠습니다 ^^

  12. 제가자료 포스팅삭제하면서 그것도 삭제한거 같습니다. 다시 작성해서 올려드릴께요^^ 답변이너무늦었네요ㅜㅜ

  13. Blog Icon
    한별

    괜찮습니다. 천천히 하셔도 되세요 ^^
    배워 볼 수 있다는거 자체가 제겐 또 하나의 행복이니까요 ^^
    즐거운 금요일 되세요 ^^

  14. Blog Icon
    jrtbyeu

    아직 답변을해주시는지 모르겠네여 ㅜㅜ
    디컴파일하고 style 내용이 안나오는대 .....
    뭐가문제인가욥 ;;ㅋㅋ

  15. 디컴이 안된겁니다

  16. 휴~~ 이제모든 작업이 끝났습니다. 이젠 수정된 SystemUI.apk를 루익/테그라크 폴더를 이용해서 system/app경로에
    넣고 리부팅/리커버리 적용하면~~

    마지막 문장에서 루익/테그라크 폴더로 system/app 결로에 넣고 리부킹/리커버리 적용이
    무슨 말인지 모르겠어요 다른 부분은 완성했구요 ㅜㅜ

  17. SYSTEM UI.APK파일을 폰 SYSTEM/APP 폴더안에 복사후 권한부여 해주시면 되세요.

    이 작업전에 순정 SYSTEM UI.APK 파일은 다른 곳에 복사 먼저 해두시고요.
    복사 먼저 하시라는 이유는 잘못 되었을시에 원래대로 돌리기 쉽게 하기 위함입니다

  18. 한별님 감사합니다^^

  19. Blog Icon
    나도하고싶다테마만들기..

    안녕하세요 좋은 글 덕분에 잘 보고 열심히 만들려고 하는사람입니다
    근데 제가 컴파일도 잘했고 경로찾아서 색상코드넣는거도 잘했고 디컴파일도 잘했고
    원래 UI에 추출된 resources.arsc 덮어씌우는거도 잘했고 SYSTEM UI.APK를 APP폴더에 권한부여해서 복사하는것도 잘했어요 다 잘했는데 색깔이 안바껴요 원래있던 펌웨어에 문제가 있는건가요? 왜이런지혹시 아시나 싶어서.ㅠㅠ

  20. 변수가 너무 많아서... 뭐라고 딱히 말씀드릴기가 힘드네요. 당연히 펌웨어 버젼도 같아야 하겠죠...

  21. Blog Icon
    신문지격파

    framework.apk / tw-framwork.apk
    이것들도 꼭 있어야 하나요???

  22. 프웍과 시스템유아이는 있어야 합니다.

  23. Blog Icon
    신문지격파

    제 기기가mj1인데 sytem.ui만 찾았거든요framework.apk / tw-framwork.apk는 mj1이든uh24이든 상관이 없나요?

  24. Blog Icon
    신문지격파

    root explore로 다 찾으니까 제 휴대폰에도 있네요 위에 문제는 대답 안해주셔도 되요.
    행복한 하루 되세요^^

  25. Blog Icon
    ㄷㅋ

    하단 소프트키 위치조정도 가능하다던데 뭘 손대면되나요?
    dpi설정후 소프트키가 오른쪽으로 약간 쏠리는 문제때문에 건들여보려고하는데요.

  26. Blog Icon
    안녕하세요

    안녕하세요 다른 APK 파을일 아스트로 앱을 이용해서 방법대로 했는데 파일이 안나오네요 ㅠㅠ 현재 올려주신 알집에서 APK는 XML 파일이 나오는데 다른 앱들은 원래 XML파일이 안나오는건가요 ???

  27. 디컴파일하신거 맞나요??

  28. 강좌 잘보고있습니다
    고맙습니다

    근데 7번에서 apk세팅 관련 링크가 안열리네요
    혹시 어떻게하는건지 알려주실수있나용..

  29. 어떤 7번이죠?? ^^;

티스토리 툴바