현재 공개된 갤럭시S4 국내용의 경우 systemUI.apk가 디컴파일은 되나 컴파일이 되지 않아 많은 테마를 제작하시는 분들이 애를 먹고 계신데요.
오늘 오전에 문제를 해결해, 이 점에 대해 포스팅해 봅니다.
참고로 이 포스팅은 초보자의 apk manager 사용법을 위한 포스팅은 아니기에, 기본적인 apk manager의 사용법은 모두 배제하고
오직 갤럭시S4의 systemUI.apk의 디컴파일 <-> 컴파일을 해결하는 부분에만 집중하였습니다.
먼저 apk manager와 apktool을 최신버전으로 받는게 좋을 것 같습니다.
현재 xda 갤럭시S4 (AT&T) 쓰레드에 apk manager가 있습니다.
출처 (XDA Developers, http://forum.xda-developers.com/showthread.php?p=40909902)
여기서 툴을 받으시면 되는데... 저기에 APK Manager를 누르시면 그냥 APK Multi Tool을 받구요.
그래서 저 모든것이 포함된 링크에서 받으시는 게 좋습니다
AIO Tool Pack이라는 링크를 누르면 하단의 모든 툴이 포함된 zip파일을 받으실 수 있습니다.
그리고 apktool사이트에서 최신 apktool과 aapt등을 다운받으시구요.
출처 (APK Tools, https://code.google.com/p/android-apktool/)
이걸 apk manager의 other폴더에 존재하는 모든 apktool 관련 파일을 덮어써줍니다.
자 그리고 SystemUI.apk를 디컴파일을 합니다.... 잘됩니다.
다시 컴파일을 합니다. 그럼 안됩니다.
위와 같이 테마사의 친구 option 21 어쩌구저쩌구 에러가 뜹니다. ㅎㅎ
먼저 에러 로그를 확인해봅시다.
warning은 무시해도 되고 실제 error가 일어난 로그를 확인해보면,
res/layout/system_bar_notification_panel_title.xml의 style 코드 @style/SystemBarNotificationText와,
res/layout/system_bar_settings_view.xml의 style 코드 4종에 관련하여
주어진 이름과 매치되는 리소스를 찾지 못함 (No Resources found that matches given name) 이라는 에러가 떠있습니다.
즉, 1.apk / 2.apk / 127.apk 등 apk manager를 위해 미리 참조하기 위해 등록하는 3개의 파일로도 참조하지 못하는
코드가 있으며 이는 android style 관련 코드라는 것입니다.
다행히도, android:style 코드는 부가적인 코드이며 항상 존재해야 하는 코드는 아닙니다.
(android:id 처럼 필수적인 요소는 아니라는 뜻이죠.)
따라서 컴파일때 굳이 필요있는 요소는 아니므로, 해당 파일에서 문제가 된 style 관련 코드를 모두 삭제합니다.
system_bar_settings_view.xml의 style코드입니다. 전부 삭제해주세요.
system_bar_notification_panel_title.xml의 style 관련 코드 역시 모두 삭제해줍니다.
그리고 컴파일을 합니다. 정상적으로 컴파일이 되는 것을 알 수 있습니다.
다만 style 코드를 수정한 두 파일에 대해서는 덮어쓰기를 하지 마세요.
(unsigned파일에서 순정파일로 해당 두 파일은 layout 덮어쓰기를 절대 하시지 마세요.)
다른 리소스에 대해서는 종전과 같이 테마 제작을 하실 수 있습니다.