Android.mk把你的源码组织成“模块”(静态库/动态库)。默认状况会读取project/jni/Android.mk,并会读取project/jni/Application.mk做为可选选项。android
你能够在单个Android.mk文件中定义多个模块,或者你能够书写多个Android.mk文件,每一个文件定义一个单一模块。架构
若是你想在子目录中定义Android.mk文件 include $(call all-subdir-makefiles)。app
注意,一个Android.mk文件可能被构建系统分析多遍,因此不要假设某个变量没有被定义。默认下,NDK将寻找下面的构建脚本:函数
$PROJECT/jni/Android.mk
若是你想在子路径下定义Android.mk文件,你应该在顶层的Android.mk中包含它们。有个函数能够作到这个功能:测试
include$(call all-subdir-makefiles)
这将会包含当前构建路径的全部子路径下的Android.mk文件们。优化
这个文件主要包含:ui
你的应用所须要模块的准确列表。spa
产生的机器码所对应的CPU架构。命令行
可选的信息,像你要构建release仍是debug,特殊的C或 C++编译参数以及其它须要应用到全部模块的构建选项。debug
这个文件是可选的:默认状况下,NDK将构建在Android.mk中列出的全部模块的而且默认面向CPUABI (armeabi).
将它放在$PROJECT/jni/Application.mk位置,那么它会被’ndk-build’脚本自动使用。
它描述哪一个原声模块是个人应用程序所须要的。例如描述添加STL的支持APP_STL := stlport_static。
它部分的变量:
APP_PROJECT_PATH # 应用程序工程根目录的绝对路径 APP_MODULES # 应用程序工程用到的模块 APP_OPTIM # 优化级别release或者debug APP_CFLAGS # C编译器开关集合 APP_CPPFLAGS # C++编译器开关集合 APP_BUILD_SCRIPT # NDK构建系统脚本即Android.mk位置 APP_ABI := armeabi armeabi-v7a # 为了支持基于ARMv5TE和ARMv7设备的软件浮点单元指令 APP_STL := system # 默认的C++运行时库 APP_STL := stlport_shared # 动态STLport库 APP_STL := stlport_static # 静态STLport库
这里的APP_OPTIM := debug和ndk-build NDK_DEBUG=1是等效的,
APP_OPTIM := release和NDK_DEBUG=0是等效的。
它是个很小的脚本在目录NDK_ROOT/ndk-build下,用于构建NDK库。用法很简单
cd <project> <ndk_root>/ndk-build # 若是将ndk_root配置到环境变量就直接使用ndk-build
它将中间文件生成到obj/下,目标文件生成到libs/下。
ndk-build # 编译 ndk-build clean # 清掉二进制文件 ndk-build NDK_DEBUG=1 # 编译为可调试版的二进制文件 ndk-build NDK_DEBUG=0 # 编译为release版 ndk-build V=1 # 执行ndk-build且打印出它所执行的详细编译命令。 ndk-build -B # 强制从新编译 ndk-build -B V=1 # -B 和 V=1 的组合 ndk-build NDK_LOG=1 # 打印出内部的NDK日志信息(用于调试NDK本身) ndk-build NDK_APP_APPLICATION_MK=<文件路径> # 用这里指定的路径寻找Application.mk文件 ndk-build -C <project路径> # 先cd进入<project路径>,而后执行ndk-build
使用NDK/ndk-gdb启用native调试(ndk-build时要家参数NDK_DEBUG=1)
ndk-build NDK_DEBUG=1 # 带调试信息编译 ant debug && adb install -r bin/xxx.apk # 打包和安装 ndk-gdb --start # 启动调试信息
SDK根目录下执行 tools/android list targets
执行建立命令:
android create project --target <target-id> --name MyFirstApp --path <path-to-workspace>/MyFirstApp --activity MyActivity --package com.example.myfirstapp # <target-id>为第一步里展现的。
首先确保安装了ANT到环境,加入ANT_ROOT/bin到环境变量
android update project --name <project name> --target <target_id> --path <path_for_project> # 这样就会产生build.xml, local.properties两文件。 # 若是添加了第三方包,须要添加--subprojects参数 ant debug # 打包一个测试apk 默认使用debug key签名 ant release # 生成一个未签名和未aligned的apk(工程添加签名规则后会生成已签名apk) adb install -r ./bin/XXX.apk # adb 安装