compile 한 소스에서 framework.apk 를 봤더니, classes.dex 파일이 없고, framework.odex 파일이 있었다. 이것은 build 옵션을 조절해 주면, 정상적인 완전한 framework.apk 가 만들어지는데, 그걸 그땐 몰랐다.[LOCAL_DEX_PREOPT 옵션관련 참고자료]
여하튼 그래서 이 odex 를 classes.dex 로 바꾸고, 이것을 .apk 와 합쳐선 완전한 framework.apk 를 만들어 보자.
baksmali -a <api_level> -x <odex_file> -d <framework_dir>
-d 는 --bootclasspath-dir <DIR> 를 이야기 한다. 보통 core.jar 의 위치를 정해주면 된다.
f:\>java -jar baksmali-1.4.2.jar -a 17 -x .\out\framework\framework.odex -d .\out\framework -o framework
.\framework에 결과가 기록 된다. 이 안에 .smali 파일들이 있다.
이제 .\framwork 의 내용을 가지고 dex 파일을 만들어 보자.
f:\>java -jar smali.jar framework -o classes.dex
위와 같이 명령어를 실행하면, classes.dex 파일이 만들어 진다.
이제 이 .dex 를 가지고 기존의 .apk 와 합쳐서 완전한 .apk 를 만들 수 있다.
대략적으로 설명하면, .apk 를 풀고, classes.dex 를 넣고, 다시 묶고, sign 하면 된다. 이것은 apktool 로 가능하다. ref. 2 을 일단 참고하자.
댓글 없음:
댓글 쓰기