- apk는 zip 압축 파일 : zip or 7-zip tool로 풀자.
- Overall File layout
- string_ids string_id_item[]
- 문자열 식별자 리스트, 내부적인 명명이나 코드에 의해서 참조되는 constant object처럼 dex 파일 내에서 사용되어지는 모든 string의 식별자들이다.
- 이 리스트는 UTF-16 code 포인터값을 사용하는 string contents에 의해서 정렬된다.
- type_ids type_id_item[]
- 타입 식별자 리스트. dex 파일에서 참조하는 모든 타입(파일안에 정의가 되어 있던 아니든)에 대한 식별자들이다.
- string_id index에 의해서 정렬되어야 한다.
- proto_ids proto_id_item[]
- 메소드 prototype 식별자 리스트. dex 파일에서 참조되어지는 모든 prototype들의 식별자들이다.
- 이 리스트는 리턴타입이 major order이고, 그 다음은 매개변수이다.(return-type과 argument 모두 type_id index를 기준이다.)
- field_id field_id_item[]
- 필드 식별자 리스트. dex파일에서 참조되는 모든 필드들의 식별자들이다.(필드가 이 파알에서 선언이 되어 있든 아니든 모두).
- 이 리스트는 반드시 정렬되어져야 한다. defining type(by type_id index)이 주 순서, field name(by string_id index)이 중간 순서, type(by type_id index)이 마이너 순서이다.
- method_id method_id_item[]
- 메소드 식별자 리스트. dex 파일에서 참조되는 모든 메소드들에 대한 식별자들이다(메소드가 파일내에 선언이 되어 있든 아니든 모든 메소드들).
- defining type(by type_id index)가 주 순서로, method name(by string_id index)가 중간 순서로, method prototype(by proto_id index)가 마이너 순서로 정렬되어져야 한다.
- class_defs class_def_item[]
- 클래스 선언 리스트. 클래스들은 클래스의 수퍼클래스와 구현된 인터페이스가 참조하는 클래스보다 리스트의 더 앞에 나타나도록 반드시 정렬되여야 한다.
- data ubyte[]
- 앞에서 언급한 모든 리스들을 위한 모든 support data을 포함하는 data 영역.
- 다른 아이템들은 다른 정렬 요구사항을 가지고, padding bytes들은 만약 적절한 정렬이 이루어야할 필요가 있다면, 각 아이템 전에 추가된다.
- link_data ubyte[]
- 정적 연결 field로 사용되는 data.
- 이 섹션 data의 포멧은 이 문서에서 spec에 벗어난다. 땡~
* Java
- Annotation class
- J2SE 5.0에 추가된 중요한 기능중 하나로, 어노테이션 유형은 일반 클래스와 비슷해보이지만 독특한 속성이 있다. 표기법은 (@)(at) 표시로 하고, 클래스에서 @(at)기호와 함께 사용하여 다른 자바 코드에 주석을 달 수 있다. 주석태그가 코멘트가 아니라 소스에 포함된다. 여기서 중요한 점은 주석이 선언적 프로그래밍 모델을 체계적으로 지원하기 위한 방법이라는 것이다
- http://wiki.oracleclub.com/display/WEBSTUDY/Annotations
- http://www.ibm.com/developerworks/kr/library/j-annotate1/index.html
- Modified UTF-8
Implementations of the DataInput and DataOutput interfaces represent Unicode strings in a format that is a slight modification of UTF-8. (For information regarding the standard UTF-8 format, see section 3.9 Unicode Encoding Forms of The Unicode Standard, Version 4.0). Note that in the following tables, the most significant bit appears in the far left-hand column.
All characters in the range '\u0001' to '\u007F' are represented by a single byte:
The null character '\u0000' and characters in the range '\u0080' to '\u07FF' are represented by a pair of bytes:Bit Values Byte 1 0 bits 6-0
Bit Values Byte 1 1 1 0 bits 10-6 Byte 2 1 0 bits 5-0
char values in the range '\u0800' to '\uFFFF' are represented by three bytes:
The differences between this format and the standard UTF-8 format are the following:Bit Values Byte 1 1 1 1 0 bits 15-12 Byte 2 1 0 bits 11-6 Byte 3 1 0 bits 5-0
- The null byte
'\u0000'
is encoded in 2-byte format rather than 1-byte, so that the encoded strings never have embedded nulls. - Only the 1-byte, 2-byte, and 3-byte formats are used.
- Supplementary characters are represented in the form of surrogate pairs.
- The null byte
댓글 없음:
댓글 쓰기