티스토리 뷰

넥서스 S를 사용하고 있어서 멜론이 기본적으로 지원되는 다른 SKT폰의 경우는 알 수 없지만,

 

멜론의 Library - > 아티스트를 열면 MP3파일과 DCF파일의 가수들이 리스트되는데

MP3파일의 가수들이 먼저 리스트되고 아래에 DCF파일의 가수들이 리스트된다.

 

여기서 가수를 선택하면 가수의 앨범이 아래에 리스트되는데, DCF쪽 가수를 선택하면,

오류가 발생하여 프로그램이 죽어버린다.(자세한 오류내용은 로그캣 참조)

 

APKTool로 멜론앱을 푼 후, 텍스트 에디터로 smali\com\iloen\melon폴더에서

AlbumBrowserActivity$AlbumListAdapter.smali 파일을 연다.

 

검색으로  .line 1007  을 검색하면,

1 ....... 2 move/from16 v1, v23 3 4 if-ne v0, v1, :cond_7 5 6 .line 1007 7 8 move-object/from16 v0, p0 9 ........

이 부분이 나온다. 이 부분의 구조를 다시 써보면 이런 구조일 것이라 추측한다. (jad로 디컴파일하면 알 수 있다.)

 

1 if ( 이게 dcf파일이냐? ) goto cond_7 2 mp3파일이니 알아서 처리 3 goto 딴데로 4 : cond_7 5 dcf파일이니 알아서 처리 6 goto 딴데로

여기서 cond_7 내부의 getQuantityString메소드에서 오류가 발생한다.

 

그런데 이렇게 mp3와 dcf를 따로 처리하는 이유를 확인해보니 mp3는 'X곡', dcf는 'X곡 중 X곡' 으로 표시하기 위해 그런 것 같은데(res/values/plurals.xml참조), 사실 별 필요 없는 것이 파일이 몇 곡 있는지만 알려주면 되지 않은가.

 

따라서 위 코드에서 if-ne v0, v1, :cond_7 부분(cond_숫자는 바뀔 수 있음)만 #로 주석처리 해주고 재컴파일하면

문제없이 정상적으로 동작한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함