2010년 7월 26일 월요일

2010/07/26

* dalvik 세미나 준비

  1. apk는 zip 압축 파일 : zip or 7-zip tool로 풀자.
  2. 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
  1. Annotation class
    • J2SE 5.0에 추가된 중요한 기능중 하나로, 어노테이션 유형은 일반 클래스와 비슷해보이지만 독특한 속성이 있다. 표기법은 (@)(at) 표시로 하고, 클래스에서 @(at)기호와 함께 사용하여 다른 자바 코드에 주석을 달 수 있다. 주석태그가 코멘트가 아니라 소스에 포함된다. 여기서 중요한 점은 주석이 선언적 프로그래밍 모델을 체계적으로 지원하기 위한 방법이라는 것이다
  2. 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:
    Bit Values
    Byte 1
    0
    bits 6-0
    The null character '\u0000' and characters in the range '\u0080' to '\u07FF' are represented by a pair of bytes:
    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:
    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 differences between this format and the standard UTF-8 format are the following:
    • 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.

댓글 없음:

댓글 쓰기