Android의 ODEX 파일은 무엇입니까?


82

일부 android앱을 설치 한 후 스마트 폰에서 odex파일 (아님 apk)로 변경되는 것을 발견했습니다 . 어떻게 되나요? 누가 나를 가르 칠 수 있는지, 나는 그것에 대해 매우 관심이 있습니다.

답변:


85

블로그 기사 는 대부분 옳지 만 완전하지는 않습니다. odex 파일의 기능을 완전히 이해하려면 애플리케이션 파일 (APK)의 작동 방식에 대해 약간 이해해야합니다.

응용 프로그램은 기본적으로 영광스러운 ZIP 아카이브입니다. Java 코드는 classes.dex라는 파일에 저장되고이 파일은 Dalvik JVM에 의해 구문 분석되고 처리 된 classes.dex 파일의 캐시는 전화기의 Dalvik 캐시에 저장됩니다.

odex는 기본적으로 Dalvik에 대한 실행 준비가 된 애플리케이션의 classes.dex의 사전 처리 된 버전입니다. 애플리케이션이 odexed되면 classes.dex가 APK 아카이브에서 제거되고 Dalvik 캐시에 아무것도 쓰지 않습니다. odexed가 아닌 애플리케이션은 두 개의 classes.dex 파일 사본 (APK에 패키징 된 사본과 Dalvik 캐시에 처리 된 사본)으로 끝납니다. Dalvik이 classes.dex 파일을 추출하고 처리해야하므로 처음 실행하는 데 시간이 조금 더 걸립니다.

사용자 정의 ROM을 빌드하는 경우 사용자가 설치 한 앱의 내부 저장 공간을 최대화하기 위해 프레임 워크 JAR 파일과 스톡 앱을 모두 odex하는 것이 좋습니다. 테마를 원하는 경우 deodex-> ​​테마 적용-> reodex-> ​​릴리스 만하면됩니다.

실제로 deodex를 사용하려면 small 및 baksmali를 사용하십시오.

https://github.com/JesusFreke/smali/wiki/DeodexInstructions


apk 파일을 reodex하는 방법을 공유해 주시겠습니까?
Basher51

23

이 블로그 기사 는 ODEX 파일의 내부를 설명합니다.

ODEX 파일이란 무엇입니까?

Android 파일 시스템에서 애플리케이션은 확장자가 .apk 인 패키지로 제공됩니다. 이러한 애플리케이션 패키지 또는 APK에는 공간을 절약하는 기능을하는 특정 .odex 파일이 포함되어 있습니다. 이러한 'odex'파일은 실제로 부팅 전에 최적화 된 응용 프로그램 부분의 모음입니다. 이렇게하면 응용 프로그램의 일부를 미리로드하므로 부팅 프로세스 속도가 빨라집니다. 다른 한편으로, 코딩의 일부가 실행 전에 이미 다른 위치로 추출 되었기 때문에 이러한 애플리케이션을 해킹하기 어렵게 만듭니다.


내 앱에 동일한 기능 (앱이 APK가 아닌 odex에서 실행 됨)이 있으면 어떻게해야합니까?
user1253435

마이너스를 얻어야합니다! dalvik은 부팅 시간을 최적화하지 않습니다. 코드는 컴파일러에서와 같이 고수준 언어에서 저수준으로 최적화됩니다.이 경우에만 dalvik의 코드는 기계 코드로의 번역입니다. 이것이 자바뿐만 아니라 C ++로 앱을 만들 수 있었던 이유입니다.
cox 2014-04-05

확실 APKs contain certain .odex files합니까?!
Amir Rezazadeh

3

미술

: 워드 프로세서에 따르면 http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/configure.odex 파일 :

APK의 메소드에 대한 AOT 컴파일 코드가 포함되어 있습니다.

또한 앱이 있으면 다음을 확인하기 때문에 일반 공유 라이브러리 인 것처럼 보입니다.

file /data/app/com.android.appname-*/oat/arm64/base.odex

그것은 말한다 :

base.odex: ELF shared object, 64-bit LSB arm64, stripped

aarch64-linux-gnu-objdump -d base.odex작동하는 것 같다 어떤 의미 분해 (그러나 일부 쓰레기 섹션)를 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.