Android開発環境と実機について その22011/01/23 13:58

しばらく時間が空いてしまいましたが、続きです。
今回は、前にダウンロードしたAndroidソースコードに含まれる、
HTC社の「dream」の開発環境についてです。

実際に、ソースコードツリーに含まれている「dream」という文字が含まれているファイルの中から、関係のありそうなファイルをピックアップしてみます。以下のファイルが関係しそうなファイルの一覧です。一部不要なファイルも含まれています。

build/core/build-system.html
build/core/product_config.mk
build/tools/check_builds.sh
external/netcat/netcat.c
development/cmds/monkey/README.NETWORK.txt
device/htc/dream/AndroidBoard.mk
device/htc/dream/AndroidProducts.mk
device/htc/dream/BoardConfig.mk
device/htc/dream/device_dream_as.mk
device/htc/dream/device_dream_eu.mk
device/htc/dream/device_dream.mk
device/htc/dream/device_dream_us.mk
device/htc/dream/extract-files.sh
device/htc/dream/full_dream.mk
device/htc/dream/generic_dream.mk
device/htc/dream-sapphire/AndroidBoardCommon.mk
device/htc/dream-sapphire/BoardConfigCommon.mk
device/htc/dream-sapphire/device_dream_sapphire.mk
device/htc/dream/setup-makefiles.sh
device/htc/dream/unzip-files.sh
device/htc/dream/unzip-supplementary-files.sh
device/htc/dream/vendorsetup.sh
device/htc/sapphire/AndroidBoard.mk
device/htc/sapphire/BoardConfig.mk
device/htc/sapphire/device_sapphire.mk
external/grub/docs/multiboot.texi
hardware/ril/reference-ril/Android.mk
development/pdk/docs/porting/build_new_device.jd
development/pdk/docs/source/building-dream.jd
development/pdk/docs/source/git-repo.jd
development/pdk/docs/source/source_toc.cs
device/htc/common/updater/Android.mk
device/htc/common/updater/bootloader.c
device/htc/dream/recovery/Android.mk
device/htc/dream-sapphire/boot/Android.mk
device/htc/dream-sapphire/boot/keypad.c
device/htc/dream-sapphire/tools/btconfig.c
bootable/recovery/etc/META-INF/com/google/android/update-script
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaMimeTest.java

つまり、ほぼ同一のCPUであれば、似たようなファイルを用意すれば、開発環境が構築できる可能性が出てくるということです。

Android開発環境と実機について2011/01/18 22:52

今回は、Androidの開発環境と実機での違いをできるだけ小さくする方法について、確認していきます。まずは、以下の場所に掲載されている「htc dream」という携帯電話での開発について確認します。
 http://source.android.com/source/building-dream.html
この内容には、ソースコードを取得した後、
 ①「. build/envsetup.sh」を実行し、
 ②「make adb」を実行し、デバッグ通信プログラムを作成し、
 ③「adb root」で実機に接続し、
 ④「extract-files.sh」を実行し、ソースコードが開示されていないファイルを実機から取ってきて、
 ⑤その後、「lunch aosp_dream_us-eng」で専用ビルド環境を構築し、
 ⑥「make」で実際にビルドする
と記載されています。

どうも、この記述は、Android 1.6について記載されているようですが、Android 2.2(froyo)について確認してみます。

Android 2.2では、若干ディレクトリ構成が変わっていますが、「device/htc/dream」の配下に、「extract-files.sh」が存在します。
また、その中身は、簡単に眺めると、
「adb pull /system/etc/01_qcomm_omx.cfg ../../../vendor/htc/$DEVICE/proprietary/01_qcomm_omx.cfg」のように実機からファイルを「pull」ようするに、「引っ張ってくる(持ってくる)」ことについて記述されています。つまり、先に記載した、④の説明どおりになっています。

このことから、Android 2.2でも1.6での記述のように、作業が進められそうであることがわかります。

次回は、もう少し、「Android開発環境と実機について」調査することにします。

Androidでのmake結果とインストールファイル2011/01/17 23:17

前回までに、標準環境でmakeした結果出力されたディレクトリおよびファイルについて示してきましたが、実際にインストールイメージに出力されるファイルは、以下のファイルに記録されています。
 installed-files.txt
このファイルの内容と、前回までの内容を比較すると、
 ①インストールされているのは、systemディレクトリとdataディレクトリのみ(symbolおよびrootディレクトリは出力されていません)。
 ②system/etc/securityディレクトリのinit.goldfish.shは、出力はされていますが、インストール対象ファイルにはない
ということがわかります。

つまり、出力ファイルがすべてがインストールイメージになるわけではないということです。

次回は、実機と開発環境について調べてみたいと思います。

Androidのディレクトリ構成 その62011/01/16 20:58

それでは、更に続きです。
symbols配下です。
今回は、とりあえず、ファイルの一覧のみです。
今後、わかる範囲で内容を確認していきます。
symbols
 init
 sbin
  adbd
  timetest
 system
  bin
   acc
   accRuntimeTest
   add-property-tag
   afar
   angeles
   applypatch
   applypatch_static
   app_process
   AudioHardwareRecord
   AudioHardwareRecordLoop
   AudioInRecord
   audioloop
   backup_helper_test
   bootanimation
   btool
   bugreport
   CameraServiceTest
   check-lost+found
   check_prereq
   cpueater
   crasher
   daemonize
   dalvikvm
   dbus-daemon
   dbus-monitor
   dbus-send
   debuggerd
   dexdump
   dexopt
   dexopt-wrapper
   dhcpcd
   dnsmasq
   dumpstate
   dumpsys
   dvz
   fbread
   flash_image
   fsck_msdos
   gdbjithelper
   gpustate
   gtest-death-test_test
   gtest_environment_test
   gtest-filepath_test
   gtest-linked_ptr_test
   gtest-message_test
   gtest_no_test_unittest
   gtest-options_test
   gtest-port_test
   gtest_pred_impl_unittest
   gtest_prod_test
   gtest_repeat_test
   gtest_stress_test
   gtest-test-part_test
   gtest-typed-test2_test
   gtest-typed-test_test
   gtest_unittest
   gzip
   icache
   installd
   iptables
   ip-up-vpn
   jpeg_bench
   keystore
   keystore_cli
   latencytop
   librank
   libsqlite3_phone_number_utils_test
   libsqlite3_phonetic_string_utils_test
   linker
   logcat
   logwrapper
   mediaserver
   memtest
   mtpd
   nc
   ndc
   netcfg
   netd
   netperf
   netserver
   omx_tests
   opcontrol
   openssl
   oprofiled
   perm_checker
   pftest
   ping
   pppd
   procmem
   procrank
   qemud
   qemu-props
   quake
   racoon
   radiooptions
   rawbu
   record
   recovery
   rild
   run-as
   safe_iop_test
   schedtest
   scp
   service
   servicemanager
   sh
   showlease
   showmap
   showslab
   skia_bench
   skia_gm
   skia_test
   sound
   sqlite3
   SRecTest
   SRecTestAudio
   ssh
   ssltest
   stagefright
   strace
   su
   surfaceflinger
   system_server
   tc
   tcpdump
   test-fb-refresh
   test-fb-simple
   testid3
   test-mdp
   test-opengl-codegen
   test-opengl-fillrate
   test-opengl-filter
   test-opengl-finish
   test-opengl-gl2_basic
   test-opengl-gl_basic
   test-opengl-gralloc
   test-opengl-linetex
   test-opengl-swapinterval
   test-opengl-textures
   test-opengl-tritex
   timeinfo
   toolbox
   updater
   v8shell
   vdc
   verifier_test
   vold
   wbxmltest
   webcore_test
   wmiconfig
  lib
   gralloc.default.so
   invoke_mock_media_player.so
   libacc.so
   libandroid_runtime.so
   libandroid_servers.so
   libaudioflinger.so
   libbinder.so
   libbuildtest.so
   libcamera_client.so
   libcameraservice.so
   libc_malloc_debug_leak.so
   libc_malloc_debug_qemu.so
   libcrypto.so
   libc.so
   libctest.so
   libcutils.so
   libdbus.so
   libdiskconfig.so
   libdl.so
   libdrm1_jni.so
   libdrm1.so
   libdvm.so
   libEGL.so
   libembunit.so
   libemoji.so
   libETC1.so
   libexif.so
   libexpat.so
   libFFTEm.so
   libgl2jni.so
   libgldualjni.so
   libGLES_android.so
   libGLESv1_CM.so
   libGLESv2.so
   libgljni.so
   libhardware_legacy.so
   libhardware.so
   libicudata-default.so
   libicudata-eu.so
   libicudata-jp.so
   libicudata-large.so
   libicudata.so
   libicui18n.so
   libicuuc.so
   libiprouteutil.so
   libjnigraphics.so
   libjni_latinime.so
   libjni_pinyinime.so
   libjnitest.so
   libjpeg.so
   liblog.so
   libmedia_jni.so
   libmediaplayerservice.so
   libmedia.so
   libm.so
   libnativehelper.so
   libnetlink.so
   libnetutils.so
   libomx_aacdec_sharedlibrary.so
   libomx_amrdec_sharedlibrary.so
   libomx_amrenc_sharedlibrary.so
   libomx_avcdec_sharedlibrary.so
   libomx_m4vdec_sharedlibrary.so
   libomx_mp3dec_sharedlibrary.so
   libomx_sharedlibrary.so
   libopencore_author.so
   libopencore_common.so
   libopencore_downloadreg.so
   libopencore_download.so
   libopencore_mp4localreg.so
   libopencore_mp4local.so
   libopencore_net_support.so
   libopencore_player.so
   libopencore_rtspreg.so
   libopencore_rtsp.so
   libpagemap.so
   libpixelflinger.so
   libplatform_library_jni.so
   libquake.so
   libreference-cdma-sms.so
   libreference-ril.so
   libril.so
   librs_jni.so
   libRS.so
   libsampleplugin.so
   libsimplejni.so
   libskia.so
   libsonivox.so
   libsoundpool.so
   libsqlite.so
   libSR_AudioIn.so
   libsrec_jni.so
   libssl.so
   libstagefright_amrnb_common.so
   libstagefright_avc_common.so
   libstagefright_color_conversion.so
   libstagefright_omx.so
   libstagefright.so
   libstdc++.so
   libstlport.so
   libsurfaceflinger_client.so
   libsurfaceflinger.so
   libsystem_server.so
   libsysutils.so
   libterm.so
   libtestplugin.so
   libthread_db.so
   libttspico.so
   libttssynthproxy.so
   libui.so
   libutils.so
   libvorbisidec.so
   libwbxml_jni.so
   libwebcore.so
   libwnndict.so
   libWnnEngDic.so
   libWnnJpnDic.so
   libwpa_client.so
   libxml2wbxml.so
   libz.so
   sensors.goldfish.so
昨日書いた、systemディレクトリと同じ名前のファイルが多数ありますが、systemディレクトリにはないものも含まれています。
これで、全ファイル一覧を示しました。

Androidのディレクトリ構成 その52011/01/15 23:04

それでは、更に続きです。
system配下です。
今回は、とりあえず、ファイルの一覧のみです。
今後、わかる範囲で内容を確認していきます。
system
 app
  AccountAndSyncSettings.apk
  ApplicationsProvider.apk
  Bluetooth.apk
  Browser.apk
  Calculator.apk
  Calendar.apk
  CalendarProvider.apk
  Camera.apk
  CertInstaller.apk
  Contacts.apk
  ContactsProvider.apk
  DefaultContainerService.apk
  DeskClock.apk
  Development.apk
  DownloadProvider.apk
  DrmProvider.apk
  Email.apk
  Gallery3D.apk
  HTMLViewer.apk
  LatinIME.apk
  Launcher2.apk
  MediaProvider.apk
  Mms.apk
  Music.apk
  PackageInstaller.apk
  Phone.apk
  PicoTts.apk
  Protips.apk
  Provision.apk
  QuickSearchBox.apk
  Settings.apk
  SettingsProvider.apk
  SoundRecorder.apk
  SpareParts.apk
  SpeechRecorder.apk
  TelephonyProvider.apk
  Term.apk
  TtsService.apk
  UserDictionaryProvider.apk
  VpnServices.apk
 bin
  am
  applypatch
  applypatch_static
  app_process
  audioloop
  bmgr
  bootanimation
  bugreport
  cat
  check_prereq
  chmod
  chown
  cmp
  dalvikvm
  date
  dbus-daemon
  dd
  debuggerd
  dexopt
  df
  dhcpcd
  dmesg
  dnsmasq
  dumpstate
  dumpsys
  dvz
  fbread
  flash_image
  fsck_msdos
  gdbjithelper
  gdbserver
  getevent
  getprop
  gzip
  hd
  id
  ifconfig
  iftop
  ime
  input
  insmod
  installd
  ioctl
  ionice
  iptables
  keystore
  keystore_cli
  kill
  linker
  ln
  log
  logcat
  logwrapper
  ls
  lsmod
  mediaserver
  mkdir
  monkey
  mount
  mtpd
  mv
  nandread
  ndc
  netcfg
  netd
  netstat
  newfs_msdos
  notify
  omx_tests
  ping
  pm
  pppd
  printenv
  ps
  qemud
  qemu-props
  racoon
  radiooptions
  reboot
  record
  recovery
  renice
  rild
  rm
  rmdir
  rmmod
  route
  run-as
  schedtest
  schedtop
  sendevent
  service
  servicemanager
  setconsole
  setprop
  sh
  showlease
  skia_test
  sleep
  smd
  stagefright
  start
  stop
  surfaceflinger
  svc
  sync
  system_server
  tc
  testid3
  toolbox
  top
  umount
  updater
  vdc
  vmstat
  vold
  watchprops
  wipe
  wmiconfig
 build.prop
 etc
  apns-conf.xml
  dbus.conf
  dhcpcd
   dhcpcd-hooks
   dhcpcd-run-hooks
    01-test
    20-dns.conf
    95-configured
  event-log-tags
  hosts
  init.goldfish.sh
  NOTICE.html.gz
  permissions
   platform.xml
  ppp
   ip-up-vpn
   pvplayer.cfg
  security
   cacerts.bks
   otacerts.zip
  vold.fstab
 fonts
  Clockopia.ttf
  DroidSansArabic.ttf
  DroidSans-Bold.ttf
  DroidSansFallback.ttf
  DroidSansHebrew.ttf
  DroidSansMono.ttf
  DroidSansThai.ttf
  DroidSans.ttf
  DroidSerif-BoldItalic.ttf
  DroidSerif-Bold.ttf
  DroidSerif-Italic.ttf
  DroidSerif-Regular.ttf
 framework
  am.jar
  android.policy.jar
  android.test.runner.jar
  bmgr.jar
  core.jar
  ext.jar
  framework.jar
  framework-res.apk
  framework-tests.jar
  ime.jar
  input.jar
  javax.obex.jar
  monkey.jar
  pm.jar
  services.jar
  svc.jar
 lib
  egl
   libGLES_android.so
  hw
   gralloc.default.so
   sensors.goldfish.so
   invoke_mock_media_player.so
   libacc.so
   libandroid_runtime.so
   libandroid_servers.so
   libaudioflinger.so
   libbinder.so
   libcamera_client.so
   libcameraservice.so
   libc_malloc_debug_leak.so
   libc_malloc_debug_qemu.so
   libcrypto.so
   libc.so
   libctest.so
   libcutils.so
   libdbus.so
   libdiskconfig.so
   libdl.so
   libdrm1_jni.so
   libdrm1.so
   libdvm.so
   libEGL.so
   libemoji.so
   libETC1.so
   libexif.so
   libexpat.so
   libFFTEm.so
   libGLESv1_CM.so
   libGLESv2.so
   libhardware_legacy.so
   libhardware.so
   libicudata.so
   libicui18n.so
   libicuuc.so
   libiprouteutil.so
   libjnigraphics.so
   libjni_latinime.so
   libjni_pinyinime.so
   libjpeg.so
   liblog.so
   libmedia_jni.so
   libmediaplayerservice.so
   libmedia.so
   libm.so
   libnativehelper.so
   libnetlink.so
   libnetutils.so
   libomx_aacdec_sharedlibrary.so
   libomx_amrdec_sharedlibrary.so
   libomx_amrenc_sharedlibrary.so
   libomx_avcdec_sharedlibrary.so
   libomx_m4vdec_sharedlibrary.so
   libomx_mp3dec_sharedlibrary.so
   libomx_sharedlibrary.so
   libopencore_author.so
   libopencore_common.so
   libopencore_downloadreg.so
   libopencore_download.so
   libopencore_mp4localreg.so
   libopencore_mp4local.so
   libopencore_net_support.so
   libopencore_player.so
   libopencore_rtspreg.so
   libopencore_rtsp.so
   libpagemap.so
   libpixelflinger.so
   libreference-cdma-sms.so
   libreference-ril.so
   libril.so
   libskiagl.so
   libskia.so
   libsonivox.so
   libsoundpool.so
   libsqlite.so
   libSR_AudioIn.so
   libsrec_jni.so
   libssl.so
   libstagefright_amrnb_common.so
   libstagefright_avc_common.so
   libstagefright_color_conversion.so
   libstagefright_omx.so
   libstagefright.so
   libstdc++.so
   libstlport.so
   libsurfaceflinger_client.so
   libsurfaceflinger.so
   libsystem_server.so
   libsysutils.so
   libterm.so
   libthread_db.so
   libttspico.so
   libttssynthproxy.so
   libui.so
   libutils.so
   libvorbisidec.so
   libwbxml_jni.so
   libwebcore.so
   libwpa_client.so
   libxml2wbxml.so
   libz.so
 usr
  keychars
   qwerty2.kcm.bin
   qwerty.kcm.bin
   tuttle2.kcm.bin
  keylayout
   AVRCP.kl
   qwerty.kl
   tuttle2.kl
  share
   bmd
    RFFspeed_501.bmd
    RFFstd_501.bmd
   zoneinfo
    zoneinfo.dat
    zoneinfo.idx
    zoneinfo.version
  srec
   config
    en.us
     baseline11k.par
     baseline8k.par
     baseline.par
     dictionary
      basic.ok
      cmu6plus.ok.zip
      enroll.ok
     g2p
      en-US-ttp.data
     grammars
      boolean.g2g
      phone_type_choice.g2g
      VoiceDialer.g2g
     models
      generic11_f.swimdl
      generic11.lda
      generic11_m.swimdl
      generic8_f.swimdl
      generic8.lda
      generic8_m.swimdl
      generic.swiarb
 xbin
  add-property-tag
  btool
  check-lost+found
  cpueater
  crasher
  daemonize
  dbus-monitor
  dbus-send
  dexdump
  latencytop
  librank
  nc
  netperf
  netserver
  opcontrol
  oprofiled
  procmem
  procrank
  rawbu
  scp
  showmap
  showslab
  sqlite3
  ssh
  strace
  su
  tcpdump
  timeinfo

とりあえず、次回はsymbolディレクトリを調べてみます。