칵이닷
12.04.21
조회 수 10302
추천 수 4
댓글 8

이번 UC21버전에서 SystemUI.odex 를 deodex 하면 다음과 같은 에러가 발생합니다.




Error occured while loading boot class path files. Aborting.
org.jf.dexlib.Code.Analysis.ClassPath$ClassNotFoundException: Could not find interface Lcom/sec/android/app/minimode/manager/MiniModeAppCallback$OnFocusChangedCallback;
at org.jf.dexlib.Code.Analysis.ClassPath$ClassDef.loadAllImplementedInterfaces(ClassPath.java:865)
at org.jf.dexlib.Code.Analysis.ClassPath$ClassDef.(ClassPath.java:690)
at org.jf.dexlib.Code.Analysis.ClassPath.loadClassDef(ClassPath.java:280)
at org.jf.dexlib.Code.Analysis.ClassPath.initClassPath(ClassPath.java:163)
at org.jf.dexlib.Code.Analysis.ClassPath.InitializeClassPathFromOdex(ClassPath.java:110)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:104)
at org.jf.baksmali.main.main(main.java:293)
Error while loading class Lcom/android/systemui/statusbar/tablet/MiniModeAppsPanel$1; from file SystemUI.odex
Error while loading ClassPath class Lcom/android/systemui/statusbar/tablet/MiniModeAppsPanel$1;




저도 이걸로 헤매다가 최근에 framework 안의 파일명 보다가 생각나서 해봤는데 잘 풀렸습니다.


만능문답 지식IN에도 방금 답변을 달았었는데, 좀 더 많은 분들이 deodex 하는데 어려움이 있을꺼 같아 팁/ 노하우 게시판에도 올립니다.




일단 에러 안의 Lcom/sec/android/app/minimode/manager/MiniModeAppCallback$OnFocusChangedCallback; 이건데요.


UC21 framework 안에 보시면 minimode.jar 파일이 있을 겁니다.


그래서 명령어를 좀 변경해줍니다.





java -jar baksmali.jar -a 15 -d framework -d app -x SystemUI.odex -c core.jar:framework.jar:ext.jar:services.jar:framework2.jar:core-junit.jar:minimode.jar



(길지만 한 줄 입니다.)




옵션 설명을 해드리겠습니다.


-a 는 안드로이드 API 레벨입니다. UC21의 4.0.3 15입니다. (smali 1.3.2에서 기본값은 14(4.0.0~4.0.2)입니다.


-d 는 bootclasspath 폴더 지정입니다. 기본값은 현재 폴더입니다. 폴더를 지정할 때마다 -d "경로"를 넣으시면 됩니다.


-c 는 bootclasspath 지정입니다. 기본 bootclasspath는 core.jar, ext,jar, framework.jar, android.policy.jar, services.jar 기본 5개인데, 명령어를 보시면 아시다시피 minimode.jar 파일을 추가합니다. 파일들 끼리는 ":"로 구분합니다.




이렇게 하시면 스르륵 풀리는 SystemUI.odex 파일을 보실 수 있습니다.


smali는 http://code.google.com/p/smali/ 에서 받으시면 됩니다.


아샌에서는 1.3.2 이상을 사용합니다.




그리고, 다음은 SystemUI.odex 를 deodex 하는데, 부족한 bootclasspath 때문에 생기는 에러 정리입니다.


























core.jar




Ljava/lang/Object




framework.jar




Landroid/renderscript/RenderScript$RSMessageHandler




ext.jar




Lorg/apache/http/impl/conn/ProxySelectorRoutePlanner




services.jar




Landroid/widget/PopupMenu$OnMenuItemClickListener




framework2.jar




Landroid/util/IGateLoggerSettingsService$Stub




core-junit.jar




Ljunit/framework/TestCase




minimode.jar




Lcom/sec/android/app/minimode/manager/MiniModeAppCallback$OnFocusChangedCallback



댓글 8
  • ?
    닉스s
    12.04.21
    얘만 안풀려서 고생했었는데ㅋ 감사합니다~
    근데.. MiniMode 저건 도대체 뭐하는애일까요 ㅎㅎ
  • ?
    뿌잉뿌잉~♡
    12.04.21
    감사합니다! 덕분에 풀었네요 ㅎㅎ
  • ?
    칵이닷
    12.04.22
    닉스s님께 도움이 되었다니 저도 좋네요. ^^
    MiniMode는 정말 뭘까요 ...
    deodex -> dex -> dex2jar -> jad 해서 MiniModeAppPanel(com/android/systemui/statusbar/tablet) 해보니
    com.sec.minimode.manager가 보이는데...
    삼성에서 넣은거 같아요..
  • ?
    칵이닷
    12.04.22
    원하시는 작업 잘 완료하시길 바래요 ㅋ
  • ?
    칵이닷
    12.04.23
    진하게 쓴 부분이 명령어 입니다.
  • ?
    칵이닷
    12.04.23
    이 팁은 SystemUI.odex를 수정하기 위해 odex된 것을 deodex 하기 위한 방법입니다. 파일에 입력하는 것이 아닌 명령 프롬프트에 입력하는 것입니다.
  • ?
    쭈니짱
    12.05.29
    정말 정말 감사합니다 아샌 업뎃후 요거때문에 무쟈게 맘고생 했는데 저에게 빛을 주시네요 ^^
  • ?
    CSW^^
    12.06.24

    cannot locate boot class path file core.jar

    이오류는 어찌하나요 아무리아무리아무리아무리 구글링해도 네이년 지식인에도 없고

    네이년 블로그도없고 대체 해결법이 아예없는건지요..

    어떻게 해야 deodex되나요...

    근데 다른파일은 다되는데 app에있는 몇몇파일만 안되먹네요.

    framework 에있는거는 잘만 풀리는데 왜 app에있는 특정 파일들만 안되는건가요

댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2