pf部2011年10月勉強会.1@androidsola
TRANSCRIPT
![Page 1: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/1.jpg)
sola 1
Android のビルドシステム
![Page 2: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/2.jpg)
sola 2
自己紹介
– sola ( twitter は @androidsola )– 最近は G+ と FB にもいます
![Page 3: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/3.jpg)
sola 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
![Page 4: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/4.jpg)
sola 4
Android のビルド手順============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.7TARGET_PRODUCT=genericTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=TARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=GWK74============================================Checking build tools versions...(中略)Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestampCombining NOTICE files: out/target/product/generic/obj/NOTICE.htmlTarget system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.imgInstall system fs image: out/target/product/generic/system.imgInstalled file list: out/target/product/generic/installed-files.txtDroidDoc took 112 sec. to write docs to out/target/common/docs/doc-comment-check
![Page 5: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/5.jpg)
sola 5
概要
1. 今回
・基本的な内容・ターゲットの追加方法・今回扱う Android は、 android-2.3.7_r1
2. 次回
・ビルドシステムの詳細※Ice Cream Sandwich で遊びすぎてまとめられませんでした。
![Page 6: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/6.jpg)
sola 6
make で行われることの調査
● make の実行で行われる色々な設定● 対象は拡張子が .mk のファイル
![Page 7: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/7.jpg)
sola 7
Android のビルド手順Makefilebuild/core/main.mkbuild/core/config.mkbuild/core/pathmap.mkbuild/core/envsetup.mkbuild/core/version_defaults.mkbuild/core/build_id.mkbuild/core/product_config.mkbuild/core/node_fns.mkbuild/core/product.mkbuild/core/device.mkdevice/sample/products/AndroidProducts.mkdevice/htc/passion/AndroidProducts.mkdevice/samsung/crespo/AndroidProducts.mkdevice/samsung/crespo4g/AndroidProducts.mkbuild/target/product/AndroidProducts.mkbuild/target/product/core.mkbuild/target/product/full.mkbuild/target/product/generic.mkbuild/target/product/core.mkbuild/target/product/languages_small.mkexternal/svox/pico/lang/all_pico_languages.mkexternal/svox/pico/lang/PicoLangDeDeInSystem.mk
![Page 8: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/8.jpg)
sola 8
Android のビルド手順external/svox/pico/lang/PicoLangEnGBInSystem.mkexternal/svox/pico/lang/PicoLangEnUsInSystem.mkexternal/svox/pico/lang/PicoLangEsEsInSystem.mkexternal/svox/pico/lang/PicoLangFrFrInSystem.mkexternal/svox/pico/lang/PicoLangItItInSystem.mkframeworks/base/data/sounds/OriginalAudio.mkbuild/target/product/generic.mkbuild/target/product/core.mkbuild/target/product/generic_x86.mkbuild/target/product/core.mkbuild/target/product/sdk.mkexternal/svox/pico/lang/PicoLangDeDeInSystem.mkexternal/svox/pico/lang/PicoLangEnGBInSystem.mkexternal/svox/pico/lang/PicoLangEnUsInSystem.mkexternal/svox/pico/lang/PicoLangEsEsInSystem.mkexternal/svox/pico/lang/PicoLangFrFrInSystem.mkexternal/svox/pico/lang/PicoLangItItInSystem.mkbuild/target/product/core.mkbuild/target/product/sim.mkbuild/target/product/generic.mkbuild/target/product/core.mkdevice/htc/passion/full_passion.mkbuild/target/product/full.mk
![Page 9: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/9.jpg)
sola 9
Android のビルド手順build/target/product/generic.mkbuild/target/product/core.mkbuild/target/product/languages_small.mkexternal/svox/pico/lang/all_pico_languages.mkexternal/svox/pico/lang/PicoLangDeDeInSystem.mkexternal/svox/pico/lang/PicoLangEnGBInSystem.mkexternal/svox/pico/lang/PicoLangEnUsInSystem.mkexternal/svox/pico/lang/PicoLangEsEsInSystem.mkexternal/svox/pico/lang/PicoLangFrFrInSystem.mkexternal/svox/pico/lang/PicoLangItItInSystem.mkframeworks/base/data/sounds/OriginalAudio.mkbuild/target/product/languages_full.mkdevice/htc/passion/passion_us.mkdevice/common/gps/gps_us_supl.mkdevice/htc/passion/passion.mkdevice/htc/passion-common/passion.mkdevice/htc/common/common.mkdevice/htc/passion-common/media_a1026.mkdevice/sample/products/sample_addon.mkbuild/target/product/sdk.mkexternal/svox/pico/lang/PicoLangDeDeInSystem.mkexternal/svox/pico/lang/PicoLangEnGBInSystem.mkexternal/svox/pico/lang/PicoLangEnUsInSystem.mk
![Page 10: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/10.jpg)
sola 10
Android のビルド手順external/svox/pico/lang/PicoLangEsEsInSystem.mkexternal/svox/pico/lang/PicoLangFrFrInSystem.mkexternal/svox/pico/lang/PicoLangItItInSystem.mkbuild/target/product/core.mkdevice/samsung/crespo/full_crespo.mkbuild/target/product/full.mkbuild/target/product/generic.mkbuild/target/product/core.mkbuild/target/product/languages_small.mkexternal/svox/pico/lang/all_pico_languages.mkexternal/svox/pico/lang/PicoLangDeDeInSystem.mkexternal/svox/pico/lang/PicoLangEnGBInSystem.mkexternal/svox/pico/lang/PicoLangEnUsInSystem.mkexternal/svox/pico/lang/PicoLangEsEsInSystem.mkexternal/svox/pico/lang/PicoLangFrFrInSystem.mkexternal/svox/pico/lang/PicoLangItItInSystem.mkframeworks/base/data/sounds/OriginalAudio.mkbuild/target/product/languages_full.mkdevice/samsung/crespo/device.mkdevice/samsung/crespo/device_base.mkdevice/samsung/crespo4g/full_crespo4g.mkbuild/target/product/full.mkbuild/target/product/generic.mk
![Page 11: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/11.jpg)
sola 11
Android のビルド手順build/target/product/core.mkbuild/target/product/languages_small.mkexternal/svox/pico/lang/all_pico_languages.mkexternal/svox/pico/lang/PicoLangDeDeInSystem.mkexternal/svox/pico/lang/PicoLangEnGBInSystem.mkexternal/svox/pico/lang/PicoLangEnUsInSystem.mkexternal/svox/pico/lang/PicoLangEsEsInSystem.mkexternal/svox/pico/lang/PicoLangFrFrInSystem.mkexternal/svox/pico/lang/PicoLangItItInSystem.mkframeworks/base/data/sounds/OriginalAudio.mkbuild/target/product/languages_full.mkdevice/samsung/crespo4g/device.mkdevice/samsung/crespo/device_base.mkbuild/target/board/generic/BoardConfig.mkbuild/core/combo/select.mkbuild/core/combo/HOST_linux-x86.mkbuild/core/combo/select.mkbuild/core/combo/TARGET_linux-arm.mkbuild/core/combo/arch/arm/armv5te.mkbuild/core/combo/javac.mkbuild/core/cleanbuild.mkbuild/core/cleanspec.mkexternal/freetype/CleanSpec.mk
![Page 12: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/12.jpg)
sola 12
Android のビルド手順packages/apps/Phone/CleanSpec.mkexternal/bouncycastle/CleanSpec.mksystem/extras/CleanSpec.mkexternal/bluetooth/hcidump/CleanSpec.mkbootable/recovery/CleanSpec.mksystem/vold/CleanSpec.mkexternal/dnsmasq/CleanSpec.mkpackages/wallpapers/Basic/CleanSpec.mkexternal/esd/CleanSpec.mkexternal/netperf/CleanSpec.mkhardware/libhardware_legacy/CleanSpec.mkexternal/icu4c/CleanSpec.mkexternal/svox/CleanSpec.mkexternal/jhead/CleanSpec.mkpackages/apps/Camera/CleanSpec.mkpackages/wallpapers/MusicVisualization/CleanSpec.mkhardware/libhardware/CleanSpec.mkpackages/apps/DeskClock/CleanSpec.mkpackages/apps/Nfc/CleanSpec.mkhardware/broadcom/wlan/CleanSpec.mkexternal/nist-sip/CleanSpec.mkdevice/htc/passion/CleanSpec.mkpackages/inputmethods/LatinIME/CleanSpec.mk
![Page 13: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/13.jpg)
sola 13
Android のビルド手順packages/providers/CalendarProvider/CleanSpec.mkdevice/sample/CleanSpec.mksdk/CleanSpec.mkexternal/zlib/CleanSpec.mkexternal/junit/CleanSpec.mkbionic/CleanSpec.mkexternal/dropbear/CleanSpec.mkpackages/apps/CertInstaller/CleanSpec.mkpackages/providers/ApplicationsProvider/CleanSpec.mkprebuilt/CleanSpec.mkexternal/ppp/CleanSpec.mkexternal/tinyxml/CleanSpec.mkpackages/apps/Music/CleanSpec.mkpackages/experimental/CleanSpec.mkexternal/bluetooth/bluez/CleanSpec.mkpackages/apps/Launcher2/CleanSpec.mkexternal/bluetooth/glib/CleanSpec.mksystem/wlan/ti/CleanSpec.mkexternal/genext2fs/CleanSpec.mkexternal/oprofile/CleanSpec.mkpackages/providers/DrmProvider/CleanSpec.mkcts/CleanSpec.mkexternal/tcpdump/CleanSpec.mk
![Page 14: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/14.jpg)
sola 14
Android のビルド手順external/apache-http/CleanSpec.mkexternal/giflib/CleanSpec.mkdevice/samsung/crespo4g/CleanSpec.mkexternal/libpcap/CleanSpec.mkdevelopment/CleanSpec.mkdevice/htc/passion-common/CleanSpec.mkexternal/elfcopy/CleanSpec.mkexternal/jdiff/CleanSpec.mkndk/CleanSpec.mkframeworks/ex/CleanSpec.mkexternal/expat/CleanSpec.mkexternal/oauth/CleanSpec.mkexternal/gtest/CleanSpec.mkexternal/proguard/CleanSpec.mkexternal/elfutils/CleanSpec.mkframeworks/opt/emoji/CleanSpec.mkpackages/apps/Provision/CleanSpec.mkhardware/qcom/gps/CleanSpec.mkexternal/dhcpcd/CleanSpec.mkexternal/strace/CleanSpec.mkframeworks/base/CleanSpec.mkhardware/msm7k/CleanSpec.mkexternal/protobuf/CleanSpec.mk
![Page 15: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/15.jpg)
sola 15
Android のビルド手順external/speex/CleanSpec.mkhardware/ril/CleanSpec.mkexternal/wpa_supplicant/CleanSpec.mkexternal/libxml2/CleanSpec.mkexternal/quake/CleanSpec.mkbootable/diskinstaller/CleanSpec.mkexternal/skia/CleanSpec.mkpackages/apps/Stk/CleanSpec.mkexternal/fdlibm/CleanSpec.mkexternal/e2fsprogs/CleanSpec.mkexternal/fsck_msdos/CleanSpec.mkpackages/apps/Protips/CleanSpec.mkexternal/neven/CleanSpec.mklibcore/CleanSpec.mkexternal/astl/CleanSpec.mksystem/bluetooth/CleanSpec.mkexternal/wpa_supplicant_6/CleanSpec.mkhardware/ti/omap3/CleanSpec.mkexternal/sqlite/CleanSpec.mkpackages/apps/Gallery/CleanSpec.mksystem/media/CleanSpec.mkexternal/jpeg/CleanSpec.mkexternal/stlport/CleanSpec.mk
![Page 16: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/16.jpg)
sola 16
Android のビルド手順system/netd/CleanSpec.mkexternal/iproute2/CleanSpec.mkexternal/netcat/CleanSpec.mkexternal/libffi/CleanSpec.mkexternal/mtpd/CleanSpec.mkpackages/providers/GoogleContactsProvider/CleanSpec.mkpackages/apps/Gallery3D/CleanSpec.mkexternal/kernel-headers/CleanSpec.mkpackages/apps/Browser/CleanSpec.mkexternal/srec/CleanSpec.mkexternal/sonivox/CleanSpec.mkpackages/inputmethods/OpenWnn/CleanSpec.mkexternal/ping/CleanSpec.mkpackages/apps/SoundRecorder/CleanSpec.mkpackages/apps/SpeechRecorder/CleanSpec.mkpackages/apps/PackageInstaller/CleanSpec.mkexternal/webkit/CleanSpec.mkexternal/tremolo/CleanSpec.mkhardware/qcom/media/CleanSpec.mkpackages/apps/Mms/CleanSpec.mkexternal/emma/CleanSpec.mkexternal/jsr305/CleanSpec.mkexternal/clearsilver/CleanSpec.mk
![Page 17: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/17.jpg)
sola 17
Android のビルド手順packages/apps/AccountsAndSyncSettings/CleanSpec.mkpackages/apps/HTMLViewer/CleanSpec.mkpackages/apps/QuickSearchBox/CleanSpec.mkpackages/apps/Calendar/CleanSpec.mkpackages/apps/VoiceDialer/CleanSpec.mkpackages/providers/TelephonyProvider/CleanSpec.mkexternal/bison/CleanSpec.mkexternal/guava/CleanSpec.mkpackages/apps/CellBroadcastReceiver/CleanSpec.mkexternal/libgsm/CleanSpec.mkexternal/easymock/CleanSpec.mkdevice/htc/common/CleanSpec.mkpackages/apps/Bluetooth/CleanSpec.mkexternal/grub/CleanSpec.mkexternal/safe-iop/CleanSpec.mkexternal/ipsec-tools/CleanSpec.mkexternal/blktrace/CleanSpec.mkexternal/libpng/CleanSpec.mkdevice/samsung/crespo/CleanSpec.mksystem/core/CleanSpec.mkpackages/wallpapers/MagicSmoke/CleanSpec.mkexternal/bzip2/CleanSpec.mkexternal/iptables/CleanSpec.mk
![Page 18: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/18.jpg)
sola 18
Android のビルド手順hardware/ti/wlan/CleanSpec.mkexternal/embunit/CleanSpec.mkexternal/bsdiff/CleanSpec.mkexternal/chromium/CleanSpec.mkpackages/wallpapers/LivePicker/CleanSpec.mkexternal/openssl/CleanSpec.mkpackages/apps/Calculator/CleanSpec.mkdalvik/CleanSpec.mkexternal/xmlwriter/CleanSpec.mkpackages/providers/ContactsProvider/CleanSpec.mkpackages/providers/DownloadProvider/CleanSpec.mkdevice/common/CleanSpec.mkpackages/apps/Contacts/CleanSpec.mkpackages/providers/UserDictionaryProvider/CleanSpec.mkexternal/dbus/CleanSpec.mkexternal/qemu/CleanSpec.mkpackages/inputmethods/PinyinIME/CleanSpec.mkpackages/providers/MediaProvider/CleanSpec.mkexternal/yaffs2/CleanSpec.mkexternal/v8/CleanSpec.mkpackages/apps/Email/CleanSpec.mkexternal/tagsoup/CleanSpec.mkpackages/apps/Settings/CleanSpec.mk
![Page 19: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/19.jpg)
sola 19
Android のビルド手順bootable/bootloader/legacy/CleanSpec.mkbuild/CleanSpec.mkbuild/core/definitions.mkbuild/core/distdir.mkbuild/core/user_tags.mkbuild/core/dex_preopt.mkbionic/Android.mkbuild/core/clear_vars.mkbionic/libc/Android.mkbionic/libc/arch-arm/syscalls.mkbuild/core/static_library.mkbuild/core/binary.mkbuild/core/base_rules.mkbuild/core/notice_files.mk
![Page 20: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/20.jpg)
sola 20
generic での設定
generic とは、ビルド時に指定してるもの
$ source build/envsetup.sh$ lunch generic-eng$ make -j8
generic 指定なので、generic.mk 、generic フォルダ配下の BoardConfig.mk を読み込む。
![Page 21: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/21.jpg)
sola 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
![Page 22: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/22.jpg)
sola 22
generic 以外の設定
lunch だけを実行すると、設定可能なリストが出てくる。
$ lunch
You're building on Linux
Lunch menu... pick a combo: 1. generic-eng 2. simulator 3. full_passion-userdebug 4. full_crespo-userdebug 5. full_crespo4g-userdebug
![Page 23: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/23.jpg)
sola 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 はどこか?
![Page 24: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/24.jpg)
sola 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
![Page 25: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/25.jpg)
sola 25
lunch がやっていること
・ビルドの設定可能なものの一覧を表示する print_lunch_menu を呼び出す。
・選択した設定が正しいか確認する 正しくないものを選ぶと、 エラーメッセージを出して終了する。
・環境変数設定 コンパイラのパス等も、ここで設定される。 JAVA_HOME の設定がないと、 export JAVA_HOME=/usr/lib/jvm/java-6-sun を実行する。
![Page 26: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/26.jpg)
sola 26
指定可能なターゲット( CPU )
$ ls build/core/combo/HOST_darwin-x86.mkHOST_linux-x86.mkHOST_windows-x86.mkTARGET_linux-arm.mkTARGET_linux-sh.mkTARGET_linux-x86.mkarchjavac.mkselect.mk
![Page 27: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/27.jpg)
sola 27
ARM
$ ls build/core/combo/arch/arm/armv4t.mkarmv5te-vfp.mkarmv5te.mkarmv7-a-neon.mkarmv7-a.mk
設定ファイルは存在するが、 armv4t はビルド出来ない。armv5te-vfp の中身は armv5te と同じ。実質、 3 種類。
![Page 28: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/28.jpg)
sola 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
![Page 29: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/29.jpg)
sola 29
armv6.mkを追加してみるbuild/core/combo/arch/arm/armv6.mkdalvik/vm/compiler/codegen/arm/Codegen.hdalvik/vm/compiler/codegen/arm/CodegenDriver.cdalvik/vm/compiler/codegen/arm/armv6/ArchVariant.cdalvik/vm/compiler/codegen/arm/armv6/ArchVariant.hdalvik/vm/compiler/codegen/arm/armv6/CallingConvention.Sdalvik/vm/compiler/codegen/arm/armv6/Codegen.cdalvik/vm/compiler/template/armv6/TEMPLATE_***dalvik/vm/compiler/template/armv6/TemplateOpList.hdalvik/vm/compiler/template/armv6/fbinop.Sdalvik/vm/compiler/template/armv6/fbinopWide.Sdalvik/vm/compiler/template/armv6/funop.Sdalvik/vm/compiler/template/armv6/funopNarrower.Sdalvik/vm/compiler/template/armv6/funopWider.Sdalvik/vm/compiler/template/armv6/platform.Sdalvik/vm/compiler/template/config-armv6dalvik/vm/compiler/template/out/CompilerTemplateAsm-armv6.Sdalvik/vm/compiler/template/rebuild.shdalvik/vm/mterp/config-armv6dalvik/vm/mterp/out/InterpAsm-armv6.Sdalvik/vm/mterp/out/InterpC-armv6.cdalvik/vm/mterp/rebuild.sh
![Page 30: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/30.jpg)
sola 30
ビルドするターゲットを増やす
add_lunch_combo xxxxx-yyyy を追加する
例として、device/key/wahuu/vendorsetup.sh を作成vendorsetup.sh には、add_lunch_combo full_wahuu-eng を書く。
![Page 31: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/31.jpg)
sola 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
追加したものが出てきたので、選択してみる。
![Page 32: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/32.jpg)
sola 32
ビルドするターゲットを増やす
実行結果
$ lunch full_wahuu-engbuild/core/product_config.mk:203: *** No matches for product "full_wahuu". 中止 .
** Don't have a product spec for: 'full_wahuu'** Do you have the right repo manifest?
vendorsetup.sh 追加のみでは当然、足りない。
![Page 33: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/33.jpg)
sola 33
ビルドするターゲットを増やす
device/key/wahuu/AndroidProducts.mk を作成するPRODUCT_MAKEFILES := \ $(LOCAL_DIR)/full_wahuu.mk
device/key/wahuu/full_wahuu.mk を作成するPRODUCT_NAME := full_wahuuPRODUCT_DEVICE := wahuuPRODUCT_MODEL := Full Android on Wahuu
![Page 34: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/34.jpg)
sola 34
ビルドするターゲットを増やす
実行結果
$ lunch full_wahoo-engbuild/core/product_config.mk:196: *** device/key/wahuu/full_wahuu.mk: PRODUCT_BRAND must be defined.. 中止 .
** Don't have a product spec for: 'full_wahuu'** Do you have the right repo manifest?
まだ怒られる。PRODUCT_BRAND 書けと。
![Page 35: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/35.jpg)
sola 35
ビルドするターゲットを増やす
device/key/wahuu/full_wahuu.mk に追記PRODUCT_NAME := full_wahuuPRODUCT_DEVICE := wahuuPRODUCT_MODEL := Full Android on WahuuPRODUCT_BRAND := key
![Page 36: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/36.jpg)
sola 36
ビルドするターゲットを増やす
実行結果
$ lunch full_wahuu-engbuild/core/config.mk:136: *** No config file found for TARGET_DEVICE wahuu. 中止 .
** Don't have a product spec for: 'full_wahuu'** Do you have the right repo manifest?
まだ怒られる。ターゲット用の config が無いのが原因。
![Page 37: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/37.jpg)
sola 37
ビルドするターゲットを増やす
ターゲット用の config を用意するdevice/key/wahuu/BoardConfig.mk TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := true TARGET_CPU_ABI := armeabi BOARD_USES_GENERIC_AUDIO := true USE_CAMERA_STUB := true
![Page 38: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/38.jpg)
sola 38
ビルドするターゲットを増やす
実行結果
$ lunch full_wahuu-eng
============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.7TARGET_PRODUCT=full_wahuuTARGET_BUILD_VARIANT=eng(中略)HOST_BUILD_TYPE=releaseBUILD_ID=GWK74============================================
うまくいった。
![Page 39: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/39.jpg)
sola 39
ビルドするターゲットを増やす
ビルドするターゲットを増やすためにしたこと。
1.device/key/wahuu/vendorsetup.sh を作成する
2.device/key/wahuu/AndroidProducts.mk を作成する
3.device/key/wahuu/full_wahuu.mk を作成する
4.device/key/wahuu/BoardConfig.mk を作成する
![Page 40: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/40.jpg)
sola 40
ライブラリを追加する
ターゲット専用のライブラリを用意する事も出来る。
libwahuu を用意する場合の例。
1.device/key/wahuu/libwahuu を作成する
2.device/key/wahuu/libwahuu/Android.mk を作成する
3.device/key/wahuu/libwahuu/ にソースコードを追加する
4.device/key/wahuu/BoardConfig.mk を変更する
5.device/key/wahuu/full_wahuu.mk を変更する
![Page 41: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/41.jpg)
sola 41
ライブラリを追加する
device/key/wahuu/libwahuu/Android.mk
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := wahuu.cLOCAL_PRELINK_MODULE := falseLOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hwLOCAL_MODULE := wahuu.$(TARGET_BOARD_PLATFORM)LOCAL_MODULE_TAGS := optionalinclude $(BUILD_SHARED_LIBRARY)
![Page 42: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/42.jpg)
sola 42
ライブラリを追加する
device/key/wahuu/libwahuu/wahuu.c
static int wahuu( int kudo ){
return 0;}
サンプルなので、何もしない関数。
![Page 43: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/43.jpg)
sola 43
ライブラリを追加する
device/key/wahuu/BoardConfig.mk に以下を追記
TARGET_BOARD_PLATFORM := omap5
device/key/wahuu/full_wahuu.mk に以下を追記
PRODUCT_PACKAGES += \wahuu.omap5
![Page 44: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/44.jpg)
sola 44
ライブラリを追加する
以上の変更後、ビルドを実行する。
ビルドログtarget thumb C: wahuu.omap5 <= device/key/wahuu/libwahuu/wahuu.ctarget SharedLib: wahuu.omap5 (out/target/product/wahuu/obj/SHARED_LIBRARIES/wahuu.omap5_intermediates/LINKED/wahuu.omap5.so)target Non-prelinked: wahuu.omap5 (out/target/product/wahuu/symbols/system/lib/hw/wahuu.omap5.so)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 配下に用意したライブラリをビルドすることに成功。
![Page 45: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/45.jpg)
sola 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)
![Page 46: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/46.jpg)
sola 46
ライブラリを追加する
com.android.future.usb.accessory を組み込む方法。
ターゲット専用のライブラリの組み込みと同様、device/key/wahuu/full_wahuu.mk に追記する。
PRODUCT_PACKAGES += \ com.android.future.usb.accessory
補足 . ADK を使うにはもう一つ、ファイルコピーが必要。PRODUCT_COPY_FILES += \ frameworks/base/data/etc/android.hardware.usb.accessory.xml: system/etc/permissions/android.hardware.usb.accessory.xml※2 行目と 3 行目は 1行で書く。
![Page 47: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/47.jpg)
sola 47
アプリを追加する
ライブラリ同様、 PRODUCT_PACKAGES に追記すれば良い。追記するのは Package名。
例device/key/wahuu/full_wahuu.mk に以下を追記する。
PRODUCT_PACKAGES += \ Rewrite
アプリはdevice/key/wahuu/app/Rewrite/***にあるものとする。
![Page 48: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/48.jpg)
sola 48
既存のファイルを上書きする
DEVICE_PACKAGE_OVERLAYS を使うことで、frameworks 配下等のファイルを差し替えてビルド出来る。
例デフォルトの壁紙を差し替える。frameworks/base/core/res/res/drawable/default_wallpaper.jpgを書き換えずに、 device/key/wahuu配下のものを使うようにする。
device/key/wahuu/wahuu_overlay/frameworks/base/core/res/res/drawable/default_wallpaper.jpgを用意し、 device/key/wahuu/full_wahuu.mk に以下を追記する。
DEVICE_PACKAGE_OVERLAYS := device/key/wahuu/wahuu_overlay
![Page 49: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/49.jpg)
sola 49
既存のファイルを上書きする差し替え前の状態
![Page 50: Pf部2011年10月勉強会.1@androidsola](https://reader035.vdocuments.pub/reader035/viewer/2022062419/5584c6b0d8b42ae0138b48d8/html5/thumbnails/50.jpg)
sola 50
既存のファイルを上書きする差し替え後の状態。うまくいった。