 |
안드로이드 플랫폼 개발시, 가끔 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 |
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
16
|