More Related Content Similar to Pf部2011年10月勉強会.1@androidsola
Similar to Pf部2011年10月勉強会.1@androidsola (20) Pf部2011年10月勉強会.1@androidsola2. 自己紹介
– sola ( twitter は @androidsola )
– 最近は G+ と FB にもいます
sola 2
3. Android のビルド手順
1. ソースコードのダウンロード
$ repo init -u https://android.googlesource.com/platform/
manifest -b android-2.3.7_r1
※1 行です
$ repo sync -j8
2. ビルド
$ source build/envsetup.sh
$ lunch generic-eng
$ make -j8
sola 3
4. ============================================
PLATFORM_VERSION_CODENAME=REL
Android のビルド手順
PLATFORM_VERSION=2.3.7
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GWK74
============================================
Checking build tools versions...
(中略)
Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp
Combining NOTICE files: out/target/product/generic/obj/NOTICE.html
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermedia
Install system fs image: out/target/product/generic/system.img
Installed file list: out/target/product/generic/installed-files.txt
DroidDoc took 112 sec. to write docs to out/target/common/docs/doc-comment-check
sola 4
7. Makefile
build/core/main.mk
Android のビルド手順
build/core/config.mk
build/core/pathmap.mk
build/core/envsetup.mk
build/core/version_defaults.mk
build/core/build_id.mk
build/core/product_config.mk
build/core/node_fns.mk
build/core/product.mk
build/core/device.mk
device/sample/products/AndroidProducts.mk
device/htc/passion/AndroidProducts.mk
device/samsung/crespo/AndroidProducts.mk
device/samsung/crespo4g/AndroidProducts.mk
build/target/product/AndroidProducts.mk
build/target/product/core.mk
build/target/product/full.mk
build/target/product/generic.mk
build/target/product/core.mk
build/target/product/languages_small.mk
external/svox/pico/lang/all_pico_languages.mk
external/svox/pico/lang/PicoLangDeDeInSystem.mk
sola 7
8. external/svox/pico/lang/PicoLangEnGBInSystem.mk
external/svox/pico/lang/PicoLangEnUsInSystem.mk
Android のビルド手順
external/svox/pico/lang/PicoLangEsEsInSystem.mk
external/svox/pico/lang/PicoLangFrFrInSystem.mk
external/svox/pico/lang/PicoLangItItInSystem.mk
frameworks/base/data/sounds/OriginalAudio.mk
build/target/product/generic.mk
build/target/product/core.mk
build/target/product/generic_x86.mk
build/target/product/core.mk
build/target/product/sdk.mk
external/svox/pico/lang/PicoLangDeDeInSystem.mk
external/svox/pico/lang/PicoLangEnGBInSystem.mk
external/svox/pico/lang/PicoLangEnUsInSystem.mk
external/svox/pico/lang/PicoLangEsEsInSystem.mk
external/svox/pico/lang/PicoLangFrFrInSystem.mk
external/svox/pico/lang/PicoLangItItInSystem.mk
build/target/product/core.mk
build/target/product/sim.mk
build/target/product/generic.mk
build/target/product/core.mk
device/htc/passion/full_passion.mk
build/target/product/full.mk
sola 8
9. build/target/product/generic.mk
build/target/product/core.mk
Android のビルド手順
build/target/product/languages_small.mk
external/svox/pico/lang/all_pico_languages.mk
external/svox/pico/lang/PicoLangDeDeInSystem.mk
external/svox/pico/lang/PicoLangEnGBInSystem.mk
external/svox/pico/lang/PicoLangEnUsInSystem.mk
external/svox/pico/lang/PicoLangEsEsInSystem.mk
external/svox/pico/lang/PicoLangFrFrInSystem.mk
external/svox/pico/lang/PicoLangItItInSystem.mk
frameworks/base/data/sounds/OriginalAudio.mk
build/target/product/languages_full.mk
device/htc/passion/passion_us.mk
device/common/gps/gps_us_supl.mk
device/htc/passion/passion.mk
device/htc/passion-common/passion.mk
device/htc/common/common.mk
device/htc/passion-common/media_a1026.mk
device/sample/products/sample_addon.mk
build/target/product/sdk.mk
external/svox/pico/lang/PicoLangDeDeInSystem.mk
external/svox/pico/lang/PicoLangEnGBInSystem.mk
external/svox/pico/lang/PicoLangEnUsInSystem.mk
sola 9
10. external/svox/pico/lang/PicoLangEsEsInSystem.mk
external/svox/pico/lang/PicoLangFrFrInSystem.mk
Android のビルド手順
external/svox/pico/lang/PicoLangItItInSystem.mk
build/target/product/core.mk
device/samsung/crespo/full_crespo.mk
build/target/product/full.mk
build/target/product/generic.mk
build/target/product/core.mk
build/target/product/languages_small.mk
external/svox/pico/lang/all_pico_languages.mk
external/svox/pico/lang/PicoLangDeDeInSystem.mk
external/svox/pico/lang/PicoLangEnGBInSystem.mk
external/svox/pico/lang/PicoLangEnUsInSystem.mk
external/svox/pico/lang/PicoLangEsEsInSystem.mk
external/svox/pico/lang/PicoLangFrFrInSystem.mk
external/svox/pico/lang/PicoLangItItInSystem.mk
frameworks/base/data/sounds/OriginalAudio.mk
build/target/product/languages_full.mk
device/samsung/crespo/device.mk
device/samsung/crespo/device_base.mk
device/samsung/crespo4g/full_crespo4g.mk
build/target/product/full.mk
build/target/product/generic.mk
sola 10
11. build/target/product/core.mk
build/target/product/languages_small.mk
Android のビルド手順
external/svox/pico/lang/all_pico_languages.mk
external/svox/pico/lang/PicoLangDeDeInSystem.mk
external/svox/pico/lang/PicoLangEnGBInSystem.mk
external/svox/pico/lang/PicoLangEnUsInSystem.mk
external/svox/pico/lang/PicoLangEsEsInSystem.mk
external/svox/pico/lang/PicoLangFrFrInSystem.mk
external/svox/pico/lang/PicoLangItItInSystem.mk
frameworks/base/data/sounds/OriginalAudio.mk
build/target/product/languages_full.mk
device/samsung/crespo4g/device.mk
device/samsung/crespo/device_base.mk
build/target/board/generic/BoardConfig.mk
build/core/combo/select.mk
build/core/combo/HOST_linux-x86.mk
build/core/combo/select.mk
build/core/combo/TARGET_linux-arm.mk
build/core/combo/arch/arm/armv5te.mk
build/core/combo/javac.mk
build/core/cleanbuild.mk
build/core/cleanspec.mk
external/freetype/CleanSpec.mk
sola 11
12. packages/apps/Phone/CleanSpec.mk
external/bouncycastle/CleanSpec.mk
Android のビルド手順
system/extras/CleanSpec.mk
external/bluetooth/hcidump/CleanSpec.mk
bootable/recovery/CleanSpec.mk
system/vold/CleanSpec.mk
external/dnsmasq/CleanSpec.mk
packages/wallpapers/Basic/CleanSpec.mk
external/esd/CleanSpec.mk
external/netperf/CleanSpec.mk
hardware/libhardware_legacy/CleanSpec.mk
external/icu4c/CleanSpec.mk
external/svox/CleanSpec.mk
external/jhead/CleanSpec.mk
packages/apps/Camera/CleanSpec.mk
packages/wallpapers/MusicVisualization/CleanSpec.mk
hardware/libhardware/CleanSpec.mk
packages/apps/DeskClock/CleanSpec.mk
packages/apps/Nfc/CleanSpec.mk
hardware/broadcom/wlan/CleanSpec.mk
external/nist-sip/CleanSpec.mk
device/htc/passion/CleanSpec.mk
packages/inputmethods/LatinIME/CleanSpec.mk
sola 12
13. packages/providers/CalendarProvider/CleanSpec.mk
device/sample/CleanSpec.mk
sdk/CleanSpec.mk
Android のビルド手順
external/zlib/CleanSpec.mk
external/junit/CleanSpec.mk
bionic/CleanSpec.mk
external/dropbear/CleanSpec.mk
packages/apps/CertInstaller/CleanSpec.mk
packages/providers/ApplicationsProvider/CleanSpec.mk
prebuilt/CleanSpec.mk
external/ppp/CleanSpec.mk
external/tinyxml/CleanSpec.mk
packages/apps/Music/CleanSpec.mk
packages/experimental/CleanSpec.mk
external/bluetooth/bluez/CleanSpec.mk
packages/apps/Launcher2/CleanSpec.mk
external/bluetooth/glib/CleanSpec.mk
system/wlan/ti/CleanSpec.mk
external/genext2fs/CleanSpec.mk
external/oprofile/CleanSpec.mk
packages/providers/DrmProvider/CleanSpec.mk
cts/CleanSpec.mk
external/tcpdump/CleanSpec.mk
sola 13
14. external/apache-http/CleanSpec.mk
external/giflib/CleanSpec.mk
Android のビルド手順
device/samsung/crespo4g/CleanSpec.mk
external/libpcap/CleanSpec.mk
development/CleanSpec.mk
device/htc/passion-common/CleanSpec.mk
external/elfcopy/CleanSpec.mk
external/jdiff/CleanSpec.mk
ndk/CleanSpec.mk
frameworks/ex/CleanSpec.mk
external/expat/CleanSpec.mk
external/oauth/CleanSpec.mk
external/gtest/CleanSpec.mk
external/proguard/CleanSpec.mk
external/elfutils/CleanSpec.mk
frameworks/opt/emoji/CleanSpec.mk
packages/apps/Provision/CleanSpec.mk
hardware/qcom/gps/CleanSpec.mk
external/dhcpcd/CleanSpec.mk
external/strace/CleanSpec.mk
frameworks/base/CleanSpec.mk
hardware/msm7k/CleanSpec.mk
external/protobuf/CleanSpec.mk
sola 14
15. external/speex/CleanSpec.mk
hardware/ril/CleanSpec.mk
Android のビルド手順
external/wpa_supplicant/CleanSpec.mk
external/libxml2/CleanSpec.mk
external/quake/CleanSpec.mk
bootable/diskinstaller/CleanSpec.mk
external/skia/CleanSpec.mk
packages/apps/Stk/CleanSpec.mk
external/fdlibm/CleanSpec.mk
external/e2fsprogs/CleanSpec.mk
external/fsck_msdos/CleanSpec.mk
packages/apps/Protips/CleanSpec.mk
external/neven/CleanSpec.mk
libcore/CleanSpec.mk
external/astl/CleanSpec.mk
system/bluetooth/CleanSpec.mk
external/wpa_supplicant_6/CleanSpec.mk
hardware/ti/omap3/CleanSpec.mk
external/sqlite/CleanSpec.mk
packages/apps/Gallery/CleanSpec.mk
system/media/CleanSpec.mk
external/jpeg/CleanSpec.mk
external/stlport/CleanSpec.mk
sola 15
16. system/netd/CleanSpec.mk
external/iproute2/CleanSpec.mk
Android のビルド手順
external/netcat/CleanSpec.mk
external/libffi/CleanSpec.mk
external/mtpd/CleanSpec.mk
packages/providers/GoogleContactsProvider/CleanSpec.mk
packages/apps/Gallery3D/CleanSpec.mk
external/kernel-headers/CleanSpec.mk
packages/apps/Browser/CleanSpec.mk
external/srec/CleanSpec.mk
external/sonivox/CleanSpec.mk
packages/inputmethods/OpenWnn/CleanSpec.mk
external/ping/CleanSpec.mk
packages/apps/SoundRecorder/CleanSpec.mk
packages/apps/SpeechRecorder/CleanSpec.mk
packages/apps/PackageInstaller/CleanSpec.mk
external/webkit/CleanSpec.mk
external/tremolo/CleanSpec.mk
hardware/qcom/media/CleanSpec.mk
packages/apps/Mms/CleanSpec.mk
external/emma/CleanSpec.mk
external/jsr305/CleanSpec.mk
external/clearsilver/CleanSpec.mk
sola 16
17. packages/apps/AccountsAndSyncSettings/CleanSpec.mk
packages/apps/HTMLViewer/CleanSpec.mk
Android のビルド手順
packages/apps/QuickSearchBox/CleanSpec.mk
packages/apps/Calendar/CleanSpec.mk
packages/apps/VoiceDialer/CleanSpec.mk
packages/providers/TelephonyProvider/CleanSpec.mk
external/bison/CleanSpec.mk
external/guava/CleanSpec.mk
packages/apps/CellBroadcastReceiver/CleanSpec.mk
external/libgsm/CleanSpec.mk
external/easymock/CleanSpec.mk
device/htc/common/CleanSpec.mk
packages/apps/Bluetooth/CleanSpec.mk
external/grub/CleanSpec.mk
external/safe-iop/CleanSpec.mk
external/ipsec-tools/CleanSpec.mk
external/blktrace/CleanSpec.mk
external/libpng/CleanSpec.mk
device/samsung/crespo/CleanSpec.mk
system/core/CleanSpec.mk
packages/wallpapers/MagicSmoke/CleanSpec.mk
external/bzip2/CleanSpec.mk
external/iptables/CleanSpec.mk
sola 17
18. hardware/ti/wlan/CleanSpec.mk
external/embunit/CleanSpec.mk
Android のビルド手順
external/bsdiff/CleanSpec.mk
external/chromium/CleanSpec.mk
packages/wallpapers/LivePicker/CleanSpec.mk
external/openssl/CleanSpec.mk
packages/apps/Calculator/CleanSpec.mk
dalvik/CleanSpec.mk
external/xmlwriter/CleanSpec.mk
packages/providers/ContactsProvider/CleanSpec.mk
packages/providers/DownloadProvider/CleanSpec.mk
device/common/CleanSpec.mk
packages/apps/Contacts/CleanSpec.mk
packages/providers/UserDictionaryProvider/CleanSpec.mk
external/dbus/CleanSpec.mk
external/qemu/CleanSpec.mk
packages/inputmethods/PinyinIME/CleanSpec.mk
packages/providers/MediaProvider/CleanSpec.mk
external/yaffs2/CleanSpec.mk
external/v8/CleanSpec.mk
packages/apps/Email/CleanSpec.mk
external/tagsoup/CleanSpec.mk
packages/apps/Settings/CleanSpec.mk
sola 18
19. bootable/bootloader/legacy/CleanSpec.mk
build/CleanSpec.mk
Android のビルド手順
build/core/definitions.mk
build/core/distdir.mk
build/core/user_tags.mk
build/core/dex_preopt.mk
bionic/Android.mk
build/core/clear_vars.mk
bionic/libc/Android.mk
bionic/libc/arch-arm/syscalls.mk
build/core/static_library.mk
build/core/binary.mk
build/core/base_rules.mk
build/core/notice_files.mk
sola 19
21. generic での設定
読まれるファイルの一覧
build/target/product/generic.mk
build/target/product/core.mk
build/target/board/generic/BoardConfig.mk
build/core/combo/select.mk
build/core/combo/HOST_linux-x86.mk
build/core/combo/select.mk
build/core/combo/TARGET_linux-arm.mk
build/core/combo/arch/arm/armv5te.mk
build/core/combo/javac.mk
sola 21
23. generic 以外の設定
設定は、以下の 3 箇所から探す
vendor/*/vendorsetup.sh
vendor/*/build/vendorsetup.sh
device/*/*/vendorsetup.sh
android-2.3.7_r1 で探すと、以下の 3 つ
device/htc/passion/vendorsetup.sh
device/samsung/crespo/vendorsetup.sh
device/samsung/crespo4g/vendorsetup.sh
generic と simulator はどこか?
sola 23
24. generic と simulator
build/envsetup.sh に存在する。
add_lunch_combo generic-eng
add_lunch_combo simulator
simulator は、 uname が Linux の場合に追加される。
※master では消えた。
master の場合、 generic は存在しない。
以下 3 つが設定される。
add_lunch_combo full-eng
add_lunch_combo full_x86-eng
add_lunch_combo vbox_x86-eng
sola 24
26. 指定可能なターゲット( CPU )
$ ls build/core/combo/
HOST_darwin-x86.mk
HOST_linux-x86.mk
HOST_windows-x86.mk
TARGET_linux-arm.mk
TARGET_linux-sh.mk
TARGET_linux-x86.mk
arch
javac.mk
select.mk
sola 26
28. armv6.mk を追加してみる
自分で用意すれば armv6 等、
標準には存在しないものを設定可能になる。
build/core/combo/arch/arm/armv6.mk
ARCH_ARM_HAVE_THUMB_SUPPORT := true
ARCH_ARM_HAVE_FAST_INTERWORKING := true
ARCH_ARM_HAVE_64BIT_DATA := true
ARCH_ARM_HAVE_HALFWORD_MULTIPLY := true
ARCH_ARM_HAVE_CLZ := true
ARCH_ARM_HAVE_FFS := true
ARCH_ARM_HAVE_VFP := true
arch_variant_cflags :=
-march=armv6
-mtune=arm1136jf-s
-mfpu=vfp
-mfloat-abi=softfp
sola 28
29. build/core/combo/arch/arm/armv6.mk
dalvik/vm/compiler/codegen/arm/Codegen.h
armv6.mk を追加してみる
dalvik/vm/compiler/codegen/arm/CodegenDriver.c
dalvik/vm/compiler/codegen/arm/armv6/ArchVariant.c
dalvik/vm/compiler/codegen/arm/armv6/ArchVariant.h
dalvik/vm/compiler/codegen/arm/armv6/CallingConvention.S
dalvik/vm/compiler/codegen/arm/armv6/Codegen.c
dalvik/vm/compiler/template/armv6/TEMPLATE_***
dalvik/vm/compiler/template/armv6/TemplateOpList.h
dalvik/vm/compiler/template/armv6/fbinop.S
dalvik/vm/compiler/template/armv6/fbinopWide.S
dalvik/vm/compiler/template/armv6/funop.S
dalvik/vm/compiler/template/armv6/funopNarrower.S
dalvik/vm/compiler/template/armv6/funopWider.S
dalvik/vm/compiler/template/armv6/platform.S
dalvik/vm/compiler/template/config-armv6
dalvik/vm/compiler/template/out/CompilerTemplateAsm-armv6.S
dalvik/vm/compiler/template/rebuild.sh
dalvik/vm/mterp/config-armv6
dalvik/vm/mterp/out/InterpAsm-armv6.S
dalvik/vm/mterp/out/InterpC-armv6.c
dalvik/vm/mterp/rebuild.sh
sola 29
31. ビルドするターゲットを増やす
$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. generic-eng
2. simulator
3. full_passion-userdebug
4. full_wahuu-eng
5. full_crespo-userdebug
6. full_crespo4g-userdebug
追加したものが出てきたので、選択してみる。
sola 31
44. ライブラリを追加する
以上の変更後、ビルドを実行する。
ビルドログ
target thumb C: wahuu.omap5 <= device/key/wahuu/libwahuu/wahuu.c
target SharedLib: wahuu.omap5 (out/target/product/wahuu/obj/SHARED_LIBRARIES/wahuu.
target Non-prelinked: wahuu.omap5 (out/target/product/wahuu/symbols/system/lib/hw/w
target Strip: wahuu.omap5 (out/target/product/wahuu/obj/lib/wahuu.omap5.so)
Install: out/target/product/wahuu/system/lib/hw/wahuu.omap5.so
device/key/wahuu 配下に用意したライブラリを
ビルドすることに成功。
sola 44
45. ライブラリを追加する
Android のソースツリーの中には、
LOCAL_MODULE_TAGS := optional なものが存在する。
例
ADK 関連の USB ライブラリ( frameworks/base/libs/usb )
frameworks/base/libs/usb/Android.mk の内容
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under,src)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:= com.android.future.usb.accessory
include $(BUILD_JAVA_LIBRARY)
sola 45