zoukankan      html  css  js  c++  java
  • Android NDK How-To ---- Android 4.4

    Android NDK How-To:
    ===================

    A collection of tips and tricks for NDK users


    How to force the display of build commands:
    -------------------------------------------

    Do "ndk-build V=1" and actual build commands will be
    displayed. This can be used to verify that things are compiled
    as you expect them to, and check for bugs in the NDK build system.

    (The V=1 trick comes from the Linux kernel build system)


    How to force a rebuild of all your sources:
    -------------------------------------------

    Use GNU Make's "-B" option, as in:

          ndk-build -B


    How to store your native sources in a location other than $PROJECT/jni:
    -----------------------------------------------------------------------

    First, you can simply tell your $PROJECT/jni/Android.mk to include
    another Android.mk that are located in different places.

    Alternatively, you can define APP_BUILD_SCRIPT in your Application.mk
    to point to an alternative Android.mk file.


    How to build a project's native files without cd-ing to it:
    -----------------------------------------------------------

    Sometimes, you may need to rebuild a project's native file without
    being able to cd to its top-level path from the command-line. This
    is do-able by using the GNU-Make '-C <path>' option, as in:

            ndk-build -C <project-path>


    How to store your Application.mk in a location other than $PROJECT/jni:
    -----------------------------------------------------------------------

    Starting with NDK r4, you can simply place the file under $PROJECT/jni/
    and launch the 'ndk-build' script from your project tree.

    If you want to use 'ndk-build' but place the file to a different location,
    use a GNU Make variable override as:

            ndk-build NDK_APPLICATION_MK=/path/to/your/Application.mk

    If you're using the legacy $NDK/apps/<name> build method, you can create
    a symbolic link to your final Application.mk there. For example, imagine
    that you wrote:

            $PROJECT/foo/Application.mk

    You can create a symlink like with a command like:

            ln -s $PROJECT/foo  $NDK/apps/<name>

    This will make $NDK/apps/<name>/Application.mk point directly to
    $PROJECT/jni/Application.mk

    Note that generated files will still go under $NDK/out/apps/<name> though.

    Windows users: The NDK is only supported on Cygwin, which implements
    symbolic links through the "ln -s" command, as in:

            ln -s  <target>  <link>


    How to properly add include directories to your module declaration:
    -------------------------------------------------------------------

    If you define several modules, it is common to need to include one
    module's header while compiling another one. For example, consider
    the following example:

            $PROJECT/jni/foo/
              Android.mk
              foo.h
              foo.c

            $PROJECT/jni/bar/
              Android.mk
              bar.c

    Where the 'bar.c' uses '#include <foo.h>'. You will need to add the
    path to the 'foo' module in jni/bar/Android.mk to build it properly.

    One is tempted to use the following:

            LOCAL_C_INCLUDES := ../foo

    However this will not work because all compilation happens from the
    directory where 'ndk-build' is invoked, and include files must be
    relative to it.

    The correct line is instead:

            LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo

    Which uses a path relative to $(LOCAL_PATH), in the case where you would
    need to move 'foo' and 'bar' to a deeper level in the 'sources' hierarchy.

    In case you absolutely need it, you can also use NDK_APP_PROJECT_PATH to
    point to your project directory:

            LOCAL_C_INCLUDES := $(NDK_APP_PROJECT_PATH)/jni/foo

    However, we don't recommend using this, paths relative to $(LOCAL_PATH)
    being better.
  • 相关阅读:
    C# winform 使用FastReport.Net自动打印一维码条码和二维码的解决方法
    C# winform 使用rdlc打印小票其中包含动态显示多条形码的解决方法
    我学习的LIS系统业务
    C# DataTable DataSet DataRow 转实体类集合,实体类和实体类集合转成DataTable 扩展方法分享
    我的自动化设备上位机软件开发设计(一)
    打开操作系统数据执行保护,关闭操作系统数据执行保护
    visualstudio2019 的报表技术rdlc在windows10上出现乱码的问题解决方法
    我带旅游ERP管理系统开发的经历
    C# web程序,winform程序,控制台程序配置log4net,使用log4net
    freemodbus modbus TCP 学习笔记
  • 原文地址:https://www.cnblogs.com/ainima/p/6331949.html
Copyright © 2011-2022 走看看