新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Android學(xué)習(xí)之Build環(huán)境初探

        Android學(xué)習(xí)之Build環(huán)境初探

        作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò) 收藏

        |-- shared_library.mk

        |-- static_java_library.mk

        |-- static_library.mk

        |-- tasks

        |-- user_tags.mk

        `-- version_defaults.mk

        這里,目錄在mydroid/build/core/tasks/有一些特別的task

        |-- apicheck.mk, 判斷api是否符合AOSP的規(guī)范

        |-- cts.mk cts測(cè)試, 可以在代碼根目錄, make cts, 編譯結(jié)束之后,進(jìn)入out/host/linux-x86/bin/下,執(zhí)行cts命令

        |-- ide.mk IDE開(kāi)發(fā)環(huán)境

        |-- product-graph.mk

        `-- sdk-addon.mk

        NDK的build環(huán)境沒(méi)有包含在標(biāo)注難得AOSP的/build/目錄下

        而是在mydroid/ndk/build下

        $ cd ndk/build/tools

        $ export ANDROID_NDK_ROOT=aosp-root/ndk

        $ ./make-release --help

        一些小技巧

        如何顯示每次編譯所包含的所有xxx.mk文件

        找到build/core/main.mk

        把include $(subdir_makefiles)替換為

        [plain] view plaincopy $(foreach subdir_makefile, $(subdir_makefiles),

        $(info Including $(subdir_makefile))

        $(eval include $(subdir_makefile))

        )

        subdir_makefile :=

        如果遇見(jiàn)API相關(guān)的PACKAGING/checkapi-current-timestamp] Error 38

        需要執(zhí)行:make update-api

        如何在AOSP代碼目錄之外編譯

        [plain] view plaincopy # Paths and settings

        TARGET_PRODUCT = generic

        ANDROID_ROOT = /home/karim/android/aosp-2.3.x

        BIONIC_LIBC = $(ANDROID_ROOT)/bionic/libc

        PRODUCT_OUT = $(ANDROID_ROOT)/out/target/product/$(TARGET_PRODUCT)

        CROSS_COMPILE =

        $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-

        # Tool names

        AS = $(CROSS_COMPILE)as

        AR = $(CROSS_COMPILE)ar

        CC = $(CROSS_COMPILE)gcc

        CPP = $(CC) -E

        LD = $(CROSS_COMPILE)ld

        NM = $(CROSS_COMPILE)nm

        OBJCOPY = $(CROSS_COMPILE)objcopy

        OBJDUMP = $(CROSS_COMPILE)objdump

        RANLIB = $(CROSS_COMPILE)ranlib

        READELF = $(CROSS_COMPILE)readelf

        SIZE = $(CROSS_COMPILE)size

        STRINGS = $(CROSS_COMPILE)strings

        STRIP = $(CROSS_COMPILE)strip

        export AS AR CC CPP LD NM OBJCOPY OBJDUMP RANLIB READELF

        SIZE STRINGS STRIP

        # Build settings

        CFLAGS = -O2 -Wall -fno-short-enums

        HEADER_OPS = -I$(BIONIC_LIBC)/arch-arm/include

        -I$(BIONIC_LIBC)/kernel/common

        -I$(BIONIC_LIBC)/kernel/arch-arm

        LDFLAGS = -nostdlib -Wl,-dynamic-linker,/system/bin/linker

        $(PRODUCT_OUT)/obj/lib/crtbegin_dynamic.o

        $(PRODUCT_OUT)/obj/lib/crtend_android.o

        -L$(PRODUCT_OUT)/obj/lib -lc -ldl

        # Installation variables

        EXEC_NAME = example-app

        INSTALL = install

        INSTALL_DIR = $(PRODUCT_OUT)/system/bin

        # Files needed for the build

        OBJS = example-app.o

        # Make rules

        all: example-app

        .c.o:

        $(CC) $(CFLAGS) $(HEADER_OPS) -c {1}lt;

        example-app: ${OBJS}

        $(CC) -o $(EXEC_NAME) ${OBJS} $(LDFLAGS)

        install: example-app

        test -d $(INSTALL_DIR) || $(INSTALL) -d -m 755 $(INSTALL_DIR)

        $(INSTALL) -m 755 $(EXEC_NAME) $(INSTALL_DIR)

        clean:

        rm -f *.o $(EXEC_NAME) core

        distclean:

        rm -f *~

        rm -f *.o $(EXEC_NAME) core

        如何增加一個(gè)新的設(shè)備

        [plain] view plaincopy $ cd ~/android/aosp-2.3.x

        $ . build/envsetup.sh

        $ mkdir -p device/acme/coyotepad

        $ cd device/acme/coyotepad

        進(jìn)入AndroidProducts.mk

        PRODUCT_MAKEFILES :=

        $(LOCAL_DIR)/full_coyotepad.mk

        對(duì)于full_coyotepad.mk

        $(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)

        $(call inherit-product, $(SRC_TARGET_DIR)/product/full.mk)

        DEVICE_PACKAGE_OVERLAYS :=

        PRODUCT_PACKAGES +=

        PRODUCT_COPY_FILES +=

        PRODUCT_NAME := full_coyotepad

        PRODUCT_DEVICE := coyotepad

        PRODUCT_MODEL := Full Android on CoyotePad, meep-meep

        在BoardConfig.mk中

        TARGET_NO_KERNEL := true

        TARGET_NO_BOOTLOADER := true

        TARGET_CPU_ABI := armeabi

        BOARD_USES_GENERIC_AUDIO := true

        USE_CAMERA_STUB := true

        打開(kāi)vendorsetup.sh

        add_lunch_combo full_coyotepad-eng


        上一頁(yè) 1 2 下一頁(yè)

        關(guān)鍵詞:

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 双辽市| 宁夏| 德格县| 桦南县| 砀山县| 新邵县| 体育| 临武县| 罗平县| 玉田县| 枣阳市| 珠海市| 鹿泉市| 洪泽县| 恩施市| 巧家县| 贺州市| 南宁市| 沂南县| 顺昌县| 紫金县| 榆树市| 库尔勒市| 辽阳县| 紫阳县| 东源县| 阳泉市| 唐海县| 商水县| 高清| 靖西县| 乌海市| 万宁市| 开原市| 鲁山县| 会宁县| 宝应县| 明溪县| 黄冈市| 文昌市| 桐梓县|