• Android编译中m、mm、mmm的区别


    Android编译中m、mm、mmm的区别

     

    在Android Source Code中有envsetup.sh檔案,當執行過此檔案後,可以大幅將build的過程簡單化、自動化

    此檔案在src(android source code 位置)/build/中

    所以可以執行以下指令
    cd /src/build/

    . envsetup.sh

    可以使用help來檢示有哪些指令可以使用

    Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:

    - croot:   Changes directory to the top of the tree.
    - m:       Makes from the top of the tree.
    - mm:      Builds all of the modules in the current directory.
    - mmm:     Builds all of the modules in the supplied directories.
    - cgrep:   Greps on all local C/C++ files.
    - hgrep:   Greps on all local C/C++ header files.
    - jgrep:   Greps on all local Java files.
    - mkgrep:  Greps on all local make files.
    - rcgrep:  Greps on all local .rc files.
    - resgrep: Greps on all local res/*.xml files.
    - shgrep:  Greps on all local .sh files.
    - godir:   Go to the directory containing a file.

    其中對模組的編譯有輔助說明的是tapas、m、mm、mmm這幾個指令

    其中mmm后面要跟模組的根目錄,不是所有的目錄下都有子模組,那些含有Android.mk檔案目錄才是模組的根目錄,模組名可以從Android.mk的LOCAL_MODULE或者LOCAL_PACKAGE_NAME變數中得到。

    單獨編譯某模組,需要在mmm后面指定模組路徑,例如編譯external 中的jpeg

    root@ubuntu:/home/android/src# mmm external/jpeg/
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=2.1-update1
    TARGET_PRODUCT=generic
    TARGET_BUILD_VARIANT=eng
    TARGET_SIMULATOR=
    TARGET_BUILD_TYPE=release
    TARGET_ARCH=arm
    HOST_ARCH=x86
    HOST_OS=linux
    HOST_BUILD_TYPE=release
    BUILD_ID=ECLAIR
    ============================================
    make: Entering directory `/home/android/src'
    Target buildinfo: out/target/product/generic/root/default.prop
    Target buildinfo: out/target/product/generic/system/build.prop
    Copy: out/target/product/generic/system/etc/apns-conf.xml
    make: Leaving directory `/home/android/src'
    root@ubuntu:/home/android/src#


    或者可用 mm 再欲編譯的模組目錄下執行
    root@ubuntu:/home/android/src/external/jpeg# mm
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=2.1-update1
    TARGET_PRODUCT=generic
    TARGET_BUILD_VARIANT=eng
    TARGET_SIMULATOR=false
    TARGET_BUILD_TYPE=release
    TARGET_ARCH=arm
    HOST_ARCH=x86
    HOST_OS=linux
    HOST_BUILD_TYPE=release
    BUILD_ID=ECLAIR
    ============================================
    make: Entering directory `/home/android/src'
    Copy: out/target/product/generic/system/etc/apns-conf.xml
    make: Leaving directory `/home/android/src'
    root@ubuntu:/home/android/src/external/jpeg#


    或者可用 m 編譯全部的模組
    root@ubuntu:/home/android/src# m

    你也可以在src目錄下直接執行make module name:

    打開看 ./external/jpeg/Android.mk

    看到裡面模組名稱為 libjpeg

    LOCAL_MODULE:= libjpeg

    這樣你就可以直接打模組名稱編譯

    cd ~/android/src
    make libjpeg

    也可以在登入時自動執行此 script,編輯 ~/.bashrc 或其他 shell 的 rc 檔,加入此 script 即可

    # invoke android envsetup.sh
    source ~/android/build/envsetup.sh


  • 相关阅读:
    Mysql JSON 新特性用法
    fastjson 使用技巧
    kafka 笔记
    nginx 使用教程
    spring boot 和 spring mvc 使用 jackson 包处理 忽略 null 字段返回
    jmeter 安装使用
    windows 下千万不要用 git的“换行符自动转换功能”
    ps grep awk 结合 xargs kill进程
    linux发行版版本及内核查看
    union 跟 order by同时使用
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124717.html
Copyright © 2020-2023  润新知