[Android] full source sdk 빌드 시 발생 한 오류 : Unable to get buffer of resource asset file



아래의 글은 해당 블로그에서 가져온 내용입니다.
원문보기 : http://slyph.tistory.com/12


cupcake을 기준으로 SDK를 만들어 보았다.
환경 : Ubuntu(cupcake이 compile되는 환경)
java 1.5에서 컴파일 했음.
* sdk 컴파일은 java 1.5 그 외 컴파일은 java 1.6으로 하면 된다.

1. cupcake 소스 폴더에서
./build/envsetup.sh
make sdk

out/host/linux-x86/sdk/android-sdk_eng.<build-id>_linux-x86.zip 가 생성됨
생성된 file은 Ubuntu에서 사용가능한 SDK임.

2. window용 SDK를 만들기 위해서 다음과 같은 작업이 필요하다.
cygwin 설치.(.\development\docs\howto_build_SDK.txt 참조)
컴파일 한 전체 소스 windows에 가져오기.(obj는 필요없다. 소스와 위의 zip파일만 있으면 OK)

cygwin에서 다음과 같이 컴파일한다.

  $ mkdir ~/mysdk
  $ export SDK_NUMBER=${USER}-`date +%Y%m%d-%H%M%S`
  $ cd ~/my-android-git
  $ development/build/tools/make_windows_sdk.sh /path/to/macos/or/linux/sdk.zip ~/mysdk

3. 컴파일중 발생하는 error
(1) external\sqlite\dist\shell.c
41 line if 0로 변경
#if defined(HAVE_READLINE) && HAVE_READLINE==1  -> #if 0
# include <readline/readline.h>
# include <readline/history.h>
#else

(2) external\qemu\sockets.c
640 line
case EAI_NODATA 부분을 다음과 같이 수정
#ifdef EAI_NODATA
case EAI_NODATA
#endif

(3) development\build\tools\make_windows_sdk.sh
122 line cygwin 폴더 위치 잡아주기
    cp -v /cygdrive/c/cygwin/bin/mgwz.dll "$TOOLS" ->    
cp -v /cygdrive/c/apps1/cygwin/bin/mgwz.dll "$TOOLS"
(cygwin이 C:/cygwin에 안 깔린 경우에만 발생, cygwin이 설치된 폴더로 수정하면 됨)

완료가 되면 mysdk\android-sdk_<SDK_NUMBER>.zip이 생성되어 있다. 압축을 풀면 SDK이다.
* 참고 사항
android.jar 내부의 resources.arsc 크기가 1M이상이면 다시 컴파일 해야한다.
(eclipse에서 Unable to get buffer of resource asset file 라는 error가 발생한다.)

frameworks\base\include\utils\Asset.h
#ifdef HAVE_ANDROID_OS
        UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024
#else
        UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024
#endif

이 부분을 모두 3*1024*1024로 변경 후 위의 작업을 다시 하면 정상동작한다.

더 자세한 방법은 .\development\docs\ 에 있는 txt 파일 참조