2007 2013 Kandroid
www.kandroid.org »
kandroid s/w fundamentals 교육 »
안드로이드 Prototype 
[Super-Minimal] Android TINY Build for Gingerbread
작성자 들풀
작성일 2011-07-01 (금) 22:47
ㆍ추천: 0  ㆍ조회: 2655      
IP: 121.xxx.76
안드로이드 플랫폼 개발시, 가끔 Target 디바이스 정도만을 구동하고 매우 낮은 수준의 디버깅 구조만을
필요로 한 경우가 있는 듯 합니다.
 
안드로이드 빌드 스크립트를 살펴보면, 이러한 구조를 지원하기 위해 BUILD_TINY_ANDROID 옵션을 지원하고 있습니다.
사용방법은 간단합니다.
 
AOSP 전체소스를 모두 받고 환경설정이 완료된 상태라면, 다음과 같이 실행하시면 됩니다.
이미 다른 이미지를 빌드한 적이 있다면, 먼저 make clean을 하시는 것이 좋을 듯 합니다.
 
> make BUILD_TINY_ANDROID=true
 
위의 결과물을 Target 보드에 직접 올리면 특별한 문제가 없지만, 에뮬레이터에 적용할 경우에는
약간의 문제가 있습니다.
 
위의 결과물을 에뮬레이터에 적용하기 위해서는
먼저, 아래의 그림과 같이 AVD Manager에서 User Add-ons에 아래의 URL을 추가해서
Virtual Device를 만들면 됩니다.
 
http://www.kandroid.org/android/repository/kandroid_tiny_gingerbread_api10r2.xml
 
  
 
정상적인 구조라면, 위의 결과물에 해당하는 이미지가 로딩되어야 하지만 약간 문제가 있더군요.
에뮬레이터가 add-on Image의 system.img을 로딩하지 않고, standard 플랫폼 이미지를 로딩하는
문제가 그것입니다.
해결방법은 위의 결과로 생성된 아래의 디렉토리의 이미지들로
     android-sdk-windowsadd-onsaddon_kandroid_tiny_gingerbread_www_kandroid_org_10image
아래의 표준 안드로이드 플랫폼 이미지를 대체하는 것입니다.
     android-sdk-windowsplatformsandroid-10images
 
이런 다음에 에뮬레이터를 실행한후, adb shell을 통해 ps 결과를 보면 아래와 같습니다.
 
> adb shell
# ps
ps
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root      1     0     268    180   c009b74c 0000875c S /init
root      2     0     0      0     c004e72c 00000000 S kthreadd
root      3     2     0      0     c003fdc8 00000000 S ksoftirqd/0
root      4     2     0      0     c004b2c4 00000000 S events/0
root      5     2     0      0     c004b2c4 00000000 S khelper
root      6     2     0      0     c004b2c4 00000000 S suspend
root      7     2     0      0     c004b2c4 00000000 S kblockd/0
root      8     2     0      0     c004b2c4 00000000 S cqueue
root      9     2     0      0     c018179c 00000000 S kseriod
root      10    2     0      0     c004b2c4 00000000 S kmmcd
root      11    2     0      0     c006fc74 00000000 S pdflush
root      12    2     0      0     c006fc74 00000000 S pdflush
root      13    2     0      0     c00744e4 00000000 S kswapd0
root      14    2     0      0     c004b2c4 00000000 S aio/0
root      22    2     0      0     c017ef48 00000000 S mtdblockd
root      23    2     0      0     c004b2c4 00000000 S kstriped
root      24    2     0      0     c004b2c4 00000000 S hid_compat
root      25    2     0      0     c004b2c4 00000000 S rpciod/0
root      26    2     0      0     c019d16c 00000000 S mmcqd
root      27    1     248    152   c009b74c 0000875c S /sbin/ueventd
root      28    1     664    260   c01b52b4 afd0c0cc S /system/bin/debuggerd
shell     31    1     732    308   c0158eb0 afd0b45c S /system/bin/sh
root      32    1     3368   168   ffffffff 00008294 S /sbin/adbd
root      450   32    732    324   c003da38 afd0c3ac S /system/bin/sh
root      451   450   888    316   00000000 afd0b45c R ps

------
 
위의 내용에서 알수 있듯이, 리눅스 커널과 디버깅을 위한 최소한의 데몬들만 실행되어 있는 결과를 알 수 있습니다.
 
더불어, 플래쉬하기 위한 tiny image들은 다음과 같이 구성됩니다.
 
ramdisk.img
 
root/
├── data
├── default.prop
├── dev
├── init
├── init.goldfish.rc
├── init.rc
├── proc
├── sbin
│   ├── adbd
│   └── ueventd -> ../init
├── sys
├── system
├── ueventd.goldfish.rc
└── ueventd.rc 
 
system.img
 
system
├── bin
│   ├── debuggerd
│   ├── gzip
│   ├── linker
│   ├── logcat
│   ├── logwrapper
│   ├── run-as
│   ├── sdcard
│   ├── sh
│   └── toolbox
├── build.prop
├── etc
│   ├── apns-conf.xml
│   ├── dbus.conf
│   ├── event-log-tags
│   ├── hosts
│   ├── init.goldfish.sh
│   ├── NOTICE.html.gz
│   ├── security
│   │   └── otacerts.zip
│   └── vold.fstab
├── lib
│   ├── libacc.so
│   ├── libc_malloc_debug_leak.so
│   ├── libc_malloc_debug_qemu.so
│   ├── libc.so
│   ├── libctest.so
│   ├── libcutils.so
│   ├── libdiskconfig.so
│   ├── libdl.so
│   ├── liblog.so
│   ├── libm.so
│   ├── libnetutils.so
│   ├── libpixelflinger.so
│   ├── libstdc++.so
│   ├── libsysutils.so
│   ├── libthread_db.so
│   └── libz.so
├── usr
│   ├── keychars
│   │   └── tuttle2.kcm.bin
│   ├── keylayout
│   │   └── tuttle2.kl
│   └── share
│       └── zoneinfo
│           ├── zoneinfo.dat
│           ├── zoneinfo.idx
│           └── zoneinfo.version
└── xbin
    ├── crasher
    └── su
 
이름아이콘 쿵야
2011-07-05 19:59
아 ~ 안드로이드 해야할게 너무 많네요..끝은 어디일가요..ㅎㅎ
들풀 끝이 있으면 슬플것 같아요..~ㅎㅎㅎ 7/5 20:00
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
    N     분류     제목    글쓴이 작성일 조회
Rooting Nexus One [11]+27 이광우 2010-07-30 6630
62 (안드로이드 유틸)안드로이드 미러링 프로그램을 소개해 드립.. VMS솔루션 2012-03-07 1668
61 [Super-Minimal] Android TINY Build for Gingerbread [1]+1 들풀 2011-07-01 2655
60 iPhone에 안드로이드 포팅 방법(iDroid) [2]+3 인베인 2010-04-23 11303
59 HX4700용 안드로이드 커널, 정확한 좌표입력 가능한 버젼 배포.. [2] 좋은이 2009-09-08 4077
58 HX4700 용 안드로이드 커널을 배포합니다. [2] 좋은이 2009-09-05 4468
57 live-android : A LiveCD for Android [3] bcbae 2009-07-16 2324
56 android-1.5 pm workaround [3]+7 이광우 2009-04-28 2864
55 2.6.29기반 Android Kernel Update [7]+2 인베인 2009-04-10 5380
54 안드로이드 스마트폰 [14]+3 주현 2009-03-27 7012
53 안드로이드의 SREC(음성인식시스템) 메뉴얼 [3]+3 인베인 2009-03-25 5064
52 [소식] AESOP-6410 안드로이드 포팅 [4]+5 엠브리오 2009-03-16 5759
51 Android Input device porting (keyboard,touch) [2] 재호아빠 2008-11-27 8945
50 aESOP S3C6410 공제(공동제작) 진행 및 참여 안내관리자.. [5]+2 인베인 2009-02-26 3965
49 Android Porting Guide to Beagle보드(cortex-a8) [3] 인베인 2009-02-26 4832
48    Re..Acting as NAT through Ethernet over USB on beagleboard 인베인 2009-09-23 4109
1234