Ubuntu 13.10 에서 Gingerbread source 빌드할 때 에러나는 부분 수정


1.
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::wp<android::AssetManager::SharedZip> >’ are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] Error1

Fix:
vim frameworks/base/libs/utils/Android.mk

 57 LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
 58 LOCAL_CFLAGS += -fpermissive  //添加此行。


2.
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::sp<AaptDir> >’ are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1

Fix:
vi frameworks/base/tools/aapt/Android.mk

Add '-fpermissive' to line 31:
LOCAL_CFLAGS += -Wno-format-y2k -fpermissive



3.
make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] 错误 1
    或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1
     cd external/srec
     wget "https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"
     patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    cd ../..



4.
external/webkit/WebCore/dom/make_names.pl
-my $preprocessor = "/usr/bin/gcc -E -P -x c++";
+my $preprocessor = "/usr/bin/gcc -E -x c++";


5.
build/core/combo/HOST_linux-x86.mk
 60 # Disable new longjmp in glibc 2.11 and later. See bug 2967937.
 61 #HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
 62 HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

6.
make: *** [out/host/linux-x86/obj/EXECUTABLES/mksnapshot_intermediates/src/api.o] 오류 1

sudo apt-get install gcc-4.4-multilib g++-4.4-multilib
export PATH=$HOME/bin:$PATH

7.
external/v8/src/globals.h:605:3: error: ‘memcpy’ was not declared in this scope
// append
55: #include <string.h>


8.
external/v8/src/objects.h:2128:60: error: ‘get’ was not declared in this scope
fix:
vi external/v8/Android.mksnapshot.mk
Add '-fpermissive' to line 60
LOCAL_CFLAGS := \
        -Wno-endif-labels \
        -Wno-import \
        -Wno-format \
        -ansi \
        -fno-rtti \
        -DENABLE_DEBUGGER_SUPPORT \
        -DV8_NATIVE_REGEXP -fpermissive



** android 컴파일 후 마지막에 다음과 같은 메세지가 나오면 uboot-mkimage 를 설치하지 않아서 이다.

mkimage: 명령어를 찾을 수 없음


다음과 같이 설치 할 수 있다.
sudo apt-get install uboot-mkimage

[Guide] Building Android 2.3.4 on Ubuntu 11.04 (64 bit)

As promised my how-to for building Android 2.3.4 on Ubuntu 11.04 (64 bit). I found out that building Android changed a bit since Ubuntu 11.04 and the documentation on the Android source site isn't up to date. This is why i choose to write down the steps i did to build Android 2.3.4. So, go grab yourself a Red Bull and let's get ready to rumble!

What do you need?

Ubuntu 11.04 (64 bit), a internet connection & if your building for a phone.. The phone.

Preparing Ubuntu:

Fire up a terminal, and download the following packages to start with:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev g++-multilib lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev

Now make sure your using the right version of Java:

sudo add-apt-repository "deb http://archive.canonical.com/ maverick partner"
sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu maverick partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk

You just downloaded all the software needed to build Android.

Make sure that your Ubuntu machine can use your USB devices by creating /etc/udev/rules.d/51-android.rules (as root user) paste the following inside that file:

# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"

Please make sure to switch "<username>" to the username of your Ubuntu user.

Now it's time to download the repo and stuff like that. In the same terminal type:

mkdir ~/bin
curl http://android.git.kernel.org/repo > ~/bin/rep

Now open up your bashrc (nano ~/.bashrc) and add the following to the end:

PATH=$PATH:$HOME/bin

Save the file and source it:

source ~/.bashrc

Getting the source:

Now, make a directory where you would like to build Android. I always keep my system clean so i made a Android/source/Gingerbread folder:

mkdir -p ~/Android/source/Gingerbread

Now go to that directory:

cd ~/Android/source/Gingerbread

Now let the repository initialize:

repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

android.git.kernel.org 가 막혀 있다면 아래 사이트를 이용하면 된다.
repo init -u https://android.googlesource.com/platform/manifest -b gingerbread

And next sync it. This will take a while :-) :

repo sync

You now have the source code of Gingerbread on your Ubuntu machine. Sweet! Of course, you still have to build it.

Building the source:

First i will explain how to build a normal generic build. This is a non phone specific build. In the Android source folder type:

. build/envsetup.sh

This will prepare your build environment. This is needed to have tools like lunch, mmm and other nifty Android specific tools. Now it's time to actually choose our version of 2.3.4:

lunch

You will be asked which Android version you want, choose "generic". Now! It's time for the real deal, building the source. It's time to fire up make:

make -j4

Do note that there are diffrent -j parameters of make to build faster. You could use make -j4 if you have 2 cores, and make -j8 if you have 4. This will speed up the building.

If the building ends with something like system.img that the build went ok. Congratulations you've just build Android 2.3.4. You can flash it to your phone with fastboot. But this is just a generic build missing device specific features.

Building the source for the Nexus One:

Connect your phone to your PC, and make sure that it's on debugging mode. From the root of your source, go to the Passion (code name for Nexus One) specific folder:

cd device/htc/passion

Import all the needed files:

./extract-files.sh

If this ends with no errors your done, you can now return to the root of your source tree. If you followed this how to go back to:

~/Android/source/Gingerbread

Now use lunch to choose the passion-full-userdebug build.

lunch

And! Now you can use make to build Android:

make -j4

If your build ends with something like this:

Install system fs image: out/target/product/passion/system.img

The build is complete. You can again use fastboot to flash it to your device. You now have the full open source version of Android running on your phone.

If you have any questions about this topic please don't hesitate to ask them in the comments i'll do my best to give answers when possible.

1. Android build 스크립 수정하기

.build/core/main.mk

파일을 여시면

75 ifeq ($(BUILD_OS),linux)
76 build_arch := $(shell uname -m)
77 ifneq (64,$(findstring 64,$(build_arch)))
78 $(warning ************************************************************)
79 $(warning You are attempting to build on a 32-bit system.)
80 $(warning Only 64-bit build environments are supported beyond froyo/2.2.)
81 $(warning ************************************************************)
82 $(error stop)
83 endif
84 endif

이 부분을 주석 처리 해주시고 저장 후 파일 닫으시면 됩니다.

    2. Android 스크립 수정하기

우선 Gingerbread 소스를 안드로이드 git에서 받으신 뒤에 

root 디렉토리 기준에서

./external/clearsilver/cgi/Android.mk
./external/clearsilver/java-jni/Android.mk
./external/clearsilver/util/Android.mk
./external/clearsilver/cs/Android.mk

위 파일을 여신 뒤

# LOCAL_CFLAGS += -m64
# LOCAL_LDFLAGS += -m64

부분에 있는 64를 32로 변경 하신 뒤 저장 하시면 됩니다.

저장이 끝나면 root 디렉토리에서 make -j3 를 하시면 됩니다.

에뮬레이터를 만들고 싶으신 경우엔 make -j3 로 빌드를 다 하고 난 뒤

make sdk 를 치시면 됩니다.
제 경우 32bits 머신에서 빌드하려다보니, 64bits 머신을 사용하라는 에러가 발생하네요..

32bits 머신에서 빌드하는 방법을 구글링해봤습니다. 덕분에 잘 빌드되네요.

1) /build/core/main.mk 수정
-ifneq (64,$(findstring 64,$(build_arch))) 
+ifneq (i686,$(findstring i686,$(build_arch)))

2) /external/clearsilver/ 내 Android.mk 수정
-LOCAL_CFLAGS += -m64 

참조URL: http://groups.google.com/group/android-platform/browse_thread/thread/b0bb991131589363


본 : http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=72


 안 드로이드 2.3 플랫폼 하이라이트

출처 : http://www.kandroid.org/board/board.php?board=AndroidNews&command=body&no=374

    원문 http://developer.android.com/sdk/android-2.3-highlights.html
    번역 @softgear
    비디오 http://www.youtube.com/watch?feature=player_embedded&v=Jx3pdWBlZ34

 

안드로이드 2.3 플랫폼은 사용자들과 개발자들에게 많은 새롭고 신나는 기능을 소개한다.
이 문서는 안드로이드 2.3의 새로운 기능과 기술에 대한 대략적인 내용을 제공한다.
새 개발자 API에 관한 상세한 정보는
Android 2.3 version notes (http://developer.android.com/sdk/android-2.3.html)를 참고하라.


안 드로이드 2.3 플 랫폼은 사용자들과 개발자들에게 많은 새롭고 신나는 기능을 소개한다.
문서는 안드로이드 2.3 새로운 기능과 기술에 대한 대략적인 내용을 제공한다.
개발자 API 관한 상세한 정보는
Android 2.3 version notes (http://developer.android.com/sdk/android-2.3.html)
참고하라.

 

새로운 사용자 기능들

단순함과 속도를 위한 UI 개선
사용자 인터페이스가 시스템 전반에 거쳐서 개선되었다. 이는 쉽게 배울 있고, 사용하기에 좀더 빠르고,
전력 효율적이 되도록 한다. 검정색 바탕의 단순화된 시각화 테마는 생생하고 선명함을
상태바(notification bar) 메뉴들, UI 다른 부분에 적용되었다. 메뉴와 설정의 변화는 사용자가 좀더
쉽게 시스템과 장치의 기능들을 찾고 제어할 있도록 한다.


빨라진, 직관적인 텍스트 입력
안드로이드 소프트 키보드는 텍스트 입력과 편집을 빠르게 있도록 최적화 다시 설계되었다.
향상된 타게팅을 위하여 자체의 모양과 위치가 변한다. 이는 쉽게 있게 하고 정확성과
속도를 향상시킨다. 키보드는 또한 현재의 문자와 사전 추천을 좀더 크고 산뜻한 스타일로 하여 읽기
쉽게 보여준다.

키보드는 사전의 추천으로부터 입력된 단어들을 수정할 있는 기능을 갖는다. 사용자가 이미 입력한
단어를 선택하는 것에 따라, 키보드는 선택한 것을 변경,선택할 있는 추천 단어들를 보여준다.
사용자는 또한 선택을 바꾸기 위해 음성 입력 모드로 전환할 수도 있다. 스마트 추천은 사용자가 추천
단어를 선택한 다음 그것을 다시 바꿀 있게 한다.

새로운 멀티터치 키조합(key-chording) 사용자가 빠르게 숫자나 기호를 입력할 있게 한다.
이는 입력 모드를 수동으로 변경할 필요 없이, Shift <문자>, ?123 <기호> 누르면 된다.

 

원터치 단어 선택과 Copy&Paste

텍스트를 입력할 또는 웹페이지를 , 사용자는 길게 눌러서 빠르게 단어를 선택, 클립보드로 복사,
붙이기가 가능하다. 단어를 누르면 free-selection 모 드로 들어간다. 여기서 사용자는 끝에 있는 화살표를
드래그함으로써 선택한 영역을 조정할 있다.
문자 입력을 위하여, 사용자는 미끄러지듯 누르기(slide-press) 하여 커서 모드로 들어갈 있다.
그리고 나서, 커서 화살표를 드래그하여 커서를 쉽고 정확하게 위치할 있다.
이제 선택 모드와 커서모드 모두에서 트랙볼의 사용이 불필요하게 되었다.

 

향 상된 전 원 관 리

안 드로이드 시스템은, 백그라운드로 실행되는 동안 CPU 많이 사용하거나 너무 오랫동안 계속 깨어
있는, 앱들을 관리하는 좀더 적극적인 역할을 수행한다. 그러한 앱들을 적절하게 닫아주는 관리를
줌으로써, 시스템이 최대의 성능을 내고 배터리 사용시간을 최대로 하는데 도움을 준다.

시스템은 또한 실행되고 있는 앱과 시스템 컴포넌트들이 소모하는 전력에 대한 좀더 많은 시각적인
정보를 제공한다. 응용프로그램 설정(Application Settings) 어떻게 배터리가 사용되고 있는지
정확한 개요를 제공한다. 여기에는 컴포넌트 또는 어플리케이션에 의해 소모된 상대적인 전력과
사용량에 대한 상세한 것을 포함한다.

 

응용프로그램 제어
홈스크린과 런처의 Option 메뉴에서 Manage Apps로의 바로가기가 생겼다. 이는 좀더 쉽게 응용프로그램
액티비티를 관리하고 확인할 있게 한다. 일단 사용자가 Manage Apps 들어가면, 새로운 Running 탭이
활성화된(active) 어플리케이션의 목록과, 각각이 사용하고 있는 메모리와 스토리지를 보여준다.
사용자는 어플리케이션에 대한 좀더 자세한 정보를 읽을수 있으며, 필요에 따라 종료하거나, 개발자에게
피드백 리포트를 있다.

통신 조직화의 새로운 방법들
업데이트된 표준 어플리케이션들은 사용자가 정보와 관계들을 다루는 새로운 접근방법을 제시한다.


-
인터넷전화

사용자는 SIP 계정을 가진 다른 사용자들에게 인터넷 전화를 있다. 사용자는 주소록에 인터넷
전화 번호 (SIP address) 추가할 있으며, Quick Contact 또 는 Dialer에 서 바로 인터넷 전화를
있다. 인터넷 전화를 사용하기 위해서, 사용자는 SIP 서비스 제공업체의 계정을 만들어야 한다. 인터넷
전화 기능은 SIP 계정을 제공하지는 않는다. 추가적으로, 특정 장치의 SIP 인터넷 전화 기능에 관한
지원은 제조사 그와 연계된 통신사에 의해 결정된다.

 

- 근거리무선통신(NFC, Near-field communication)
NFC Reader
어 플리케이션은 사 용자가 NFC 태 그를 읽고 상호작용을 있도록 한다. 예를 들어
사용자는 포스터나 스티커, 광고에 포함되어 있는 NFC 태그를 "만지거나(touch)", "쓸어버릴(swipe)"
있다. 다음에는, 태그로부터 읽은 데이터에 따라 동작한다. 통상적인 사용은, 식당 또는 가게,
이벤트에서 태그를 읽는 것이 것이다. 다음에는, 태그 데이터에 포함된 URL 점프하여 등록을
한다던가 등급을 매길 있다. NFC 통신은 장치 하드웨어의 무선 기술에 의존한다. 따라서 특정
장치의 NFC 기능 지원 여부는 제조사에 의해 결정된다.


-
다 운로드 관 리
Downloads 어플리케이션은 사용자가 쉽게 브라우저 또는 이메일, 다른 어플케이션에서 받은 파일들에
쉽게 접근할 있게 한다. Downloads 시스템 내에 있는 새로운 다운로드 매니저 기능 위에 올라간다.
다운로드 매니저는 다른 어플리케이션들이 쉽게 다운로드를 저장하고 관리할 수게 한다.

-
카 메라
어플리케이션은 이제 사용자가 복수 개의 카메라를 사용할 있게 한다. 이는 전면 카메라를 포함한다.

 

새로운 개발자 기능들

안드로이드 2.3 다양한 기능과 API 제공하여 개발자들이 새로운 형태의 응용프로그램을 안드로이드
플랫폼으로 가져오게 한다.

  • 게이밍을 위한 향상

  • 새로운 통신 형태들

  • 풍성한 멀티미디어

게이밍을 위한 향상

-
성 능(Performance)
안드로이드 2.3 모든 어플리케이션이 보다 빠르고 효율적으로 동작하도록 시스템 전반에 거친 여러가지
향상을 포함한다. 특히 게임 개발자들을 위한 것으로,

  • 동시 가베지 컬렉터 (Concurrent garbage collector) - Dalvik VM 새로운 동시 가베지 컬렉터를 
    소개한다. 이는 어플리케이션의 일시 멈춤 현상을 최소화하여, 애 니메이션이 보다 부드러워지고
    게임 같은 어플리케이션의 응답성을 증가시키는데 도움을 준다.

  • 빠른 이벤트 배포 (Faster event distribution) - 플랫폼은 터치와 키보드 이벤트를 빠르고 
    효율적으로 처리한다. 이는 이벤트 배포 동안 CPU 사용을 최소화 한다. 변경은 모든 어플리케이션의 
    응답성을 향상시킨다. 특히 3D 그래픽 또는 CPU 위주 동작들과 같이 동작하는 터치 이벤트를 사용하는 
    게임에게 효과적이다.

  • 업데이트된 비디오 드라이버 (Updated video drivers) - 플랫폼은 OpenGL ES 동 작의 효율성을 향상시키는 
    업데이트된 써드파티 비디오 드라이버들을 사용한다. 그 래서 전체적인 3D 그래픽의 성능을 향상시킨다.

- 네이티브 입력과 센서 이벤트 (Native input and sensor events)
네이티브 코드를 사용하는 어플리케이션은 네이티브 코드에서 입력이나 센서 이벤트를 직접 받아서 처리할
있다. 이는 드라마틱하게 효율성과 응답성을 향상시킨다.

플랫폼에서 제공하는 네이티브 라이브러리는 어플리케이션들이 프레임웍을 통해 제공되는 것과 같은
형태의 입력 이벤트를 다룰 있게 한다. 어플리케이션들은 모든 지원되는 센서 종류로부터 이벤트들을
수신할 있고, 특성 센서를 켜거나 있으며, 이벤트 전달 속도와 큐잉을 다룰 있다.

-
향 상된 3D 모션 처리를 위한 자이로스코프, 새로운 센서들
  (Gyroscope and other new sensors, for improved 3D motion processing)

안드로이드 2.3 새로운 타입의 센서를 지원하는 API 추가한다. 여기에는 자이로스코프(gyroscope),
회 전(rotation vector), 선형가속(linear acceleration), 중력(gravity), 기압계(barometer) 센서들을
포함한다. 어플리케이션은 장치에 내장된 센서들을 조합하여, 3차원 모션이나 자세하고 정확한 방향
변화를 추적할 있다. 예를 들어 게임 어플리케이션은 자이로스코프와 가속도계를 읽어 복잡한
사용자의 제스쳐와 모션들(기울이기,회전,밀기,자르기-tilt, spin, thrust,slice) 인식할 있다.

- 네이티브 오디오에 대한 Open API (Open API for native audio)
플 랫폼은 Khronos OpenSL ES (http://www.khronos.org/opensles/) 소프트웨어 구현을 제공한다.
이는 네이티프 코드에서 강력한 오디오 제어 효과에 접근할 있게 하는 표준 API이다. 어플리케이션은
오디오 장치를 다루고 오디오 입력,출력을 제어하거나 직접 처리하기 위해 API 사용할 있다

- 네이티브 그래픽 관리(Native graphics management)
플랫폼 은 Khronos EGL(http://www.khronos.org/egl/) 라이브러리로의 인터페이스를 제공한다.
이는 어플리케이션이 네이티브에서 그래픽 컨텍스트를 다루거나 OpenGL ES texture surface 만들고
다룰 있게 한다.

- 네이티브에서 액티비티 라이프사이클, 윈도우 관리로의 접근
  (Native access to Activity lifecycle, window management)
네이티브 어플리케이션이 NativeActivity 라는 새로운 형태의 클래스를 선언할 있다. 클래스는
라이프사이클 콜백이 네이티브 코드에 직접 구현되어 있다. NativeActivity 그것과 연계된 네이티브
코드는 시스템에서 다른 액티비티와 마찬가지로 동작한다. 그들은 어플리케이션의 시스템 프로세스
내에서 실행되며, 어플리케이션의 메인 UI 쓰레드에서 수행되고, 다른 액티비티처럼 라이프사이클
콜백을 받는다.

플랫폼은 또한 윈도우를 다룰 있는 네이티브 API 제공한다. 이는 직접 윈도우에 그리기 위한
pixel buffer
잠그고/푸는 기능을 포함한다. API 통하여, 어플리케이션은 프레임웍 Surface
object
연계된 네이티브 윈도우 object 얻을 있고, 네이티브에서 직접 상호동작할 있다.


-
네이티브에서 Asset Storage 접근 (Native access to assets, storage)
어플리 케이션은 이제 네이티브 Asset Manager API 사용하여 JNI 통할 필요 없이 어플리케이션
asset
직접 접근할 있다. 만약 asset 압축되어 있으면, 어플리케이션이 asset 데이터를 읽을 ,
플랫폼이 압축을 해제하여 스트리밍 준다. 이제 이상 압축된 .apk asset 읽을 있는 사이즈
제한이 없어진다.

추가적으로, 어플리케이션은 Storage Manager API 사용하여, 시스템이 관리하거나 다운로드된
OBB
파일들(Opaque Binary Blob) 직접 다룰 있다. 그런데, 비록 플랫폼이 안드로이드 2.3에서
OBB
지원하지만, OBB파일을 생성하고 다루는 개발 툴은 2011 초까지는 나오지 않을 것이다.

- 견고한 네이티브 개발 환경(Robust native development environment)
Android NDK (r5이상) 안드로이드 2.3 플랫폼에서 제공되는 풍성한 네이티브 환경을 사용할 있는 ,
툴체인, 라이브러리의 완전한 세트를 제공한다. 자세한 정보 또는 NDK 다운 받기위해서는 Android NDK 페이지(http://developer.android.com/sdk/ndk/index.html) 보라.

새로운 통신 형태들

- 인터넷전화(Internet telephony)
개발자들 은 이제 SIP기반 인터넷 전화 기능을 자기 어플리케이션에 추가할 있다. 안드로이드 2.3 full
SIP
프로토콜 스택 통합된 관리 서비스을 포함한다. 이는 어플리케이션이, 세션 관리라던가
트랜스포트 계층의 통신 또는 오디오 녹음 재생을 직접 관리하지 않고도, 쉽게 전화를 걸거나 받게 한다
특정 장치의 SIP 인터넷 전화 기능의 지원여부는 제조사와 통신사에 따라 결정된다.

- 근거리무선통신(Near Field Communications,NFC)
플랫폼 의 NFC지원은 개발자가 완전히 새로운 부류의 안드로이드 어플리케이션을 만들 있게 한다.
개발자는 근접성에 기반한 정보을 제공하는 새로운 어플리케이션과 사용자 기관, 상인 광고사업자들을
위한 서비스를 만들 있다.

NFC API
사용하여, 사용자가 NFC 기능이 있는 장치를 스티커 스마트 포스터, 어떤 다른 장치 등에
내장된 요소로 갖다 대면("touches"), 어플리케이션은 NFC 태그 발견("discovered") 응답할 있다.
관심 있는 태그가 수집되면, 어플케이션은 태그에 응답하여, 그것으로부터 메시지를 읽은 , 필요에 따라
사용자에게 물어보고 메시지를 저장한다.

NFC
통신은 장치 하드웨어의 무선 기술에 의존한다. 따라서 특정 장치의 NFC 기능 지원 여부는 제조사에
의해 결정된다.

풍성한 멀티미디어

-
믹스 가능한 오디오 이펙트 (Mixable audio effects)
새로운 오디오 이펙트 API 개발자들이 쉽게 풍성한 오디오 환경을 만들 있게 한다. 이는 오디오 트랙
또는 사운드에 대한 이퀄라져, 베이스 부스트, 헤드폰 시각화 (widened soundstage), 리벌브를 추가할
있다. 개발자는 복수개의 트랙을 넘어서며 개별 트랙에 복수의 이펙트들을 섞거나, 전체에 대해 이펙트를
적용할 있다.


-
새로운 미디어 포맷 지원 (Support for new media formats)
플랫폼 은 VP8 오픈 비디오 압축 포맷과 WebM 오픈 컨테이너 포맷을 지원한다. 플랫폼은 또한 AAC
인코딩과 (소프트웨어적으로) AMR wideband 인코딩을 지원한다. 어플리케이션은 좋은 음질의
오디오를 캡쳐할 있다.

- 복수개의 카메라에 접근(Access to multiple cameras)
카메라 API 개발자가 장치에 있는 어떤 카메라에도 접근할 있게 한다. 여기에는 전면(front-facing)
카메라도 포함된다. 어플리케이션은 장치에 있는 카메라의 수를 얻을 있고, 카메라의 종류 특성을
얻을 있고, 필요에 따라 카메라를 사용할 있다. 예를 들면, 비디오 채팅 어플리케이션은 낮은 화질을
제공하는 전면 카메라를 사용하기를 원할 것이고, 사진 어플리케이션은 고화질의 후면 카메라를 사용하고자
것이다.

새로운 플랫폼 기술들

멀티미디어 프레임웍(Media Framework)

  • 새로운 미디어 프레임웍은 OpenCore 완전히 대체한다. 인코딩/디 코딩을 위한 모든 이전 코덱,
    컨테이너 지원을 그대로 유지한다.

  • VP8 오픈 비디오 코덱 포맷과 WebM 오픈 컨테이너 포맷의 통합 지원

  • AAC 인코딩과 AMR wideband encoding 추가

리눅스 커널 (Linux Kernel)

  • 2.6.35 업데이트

네트워킹 (Networking)

  • SIP 스택, 제조사가 구성 가능함

  • NFC 지원, 제조사가 구성 가능함

  • BlueZ 스택 업데이트

달빅 런타임 (Dalvik runtime)

  • Dalvik VM:

    • 동시 가베지 컬렉터 Concurrent garbage collector (3ms이 하 일시정지 목표

    • 많은 JIT (code-generation) 최적화 추가

    • 향상된 코드 검증 

    • 성능과 메모리 이슈를 확인하기 위한 StrictMode 디버깅

  • Core libraries:

    • Expanded I18N 지원 (full worldwide encodings, more locales)

    • 빠른 Formatter number formatting. 예를 들어 float formatting 2.5x 빨라짐

    • HTTP responses 디폴트로 gzip 압축함. XML JSON API response 크기가 60%이상 줄어듦

    • 새로운 collections utilities APIs

    • 향상된 network APIs

    • 향상된 파일 읽기/쓰기 제어

    • JDBC 업데이트

  • 이전 프로젝트로부터의 업데이트:

    • OpenSSL 1.0.0a

    • BouncyCastle 1.45

    • ICU 4.4

    • zlib 1.2.5

개발자 API 관한 많은 정보를 위해서는

Android 2.3 version notes(http://developer.android.com/sdk/android-2.3.html)

API Differences Report(http://developer.android.com/sdk/api_diff/9/changes.html) 보라.

문서끝.

+ Recent posts