Android逆向(002) NDK-BUILD 编译Hello World

NDK

NDK(native development kit) 原生开发套件。一款将c,c++与Android应用结合到一起的开发工具,Android应用使用jni调用原生c++开发的模块,使性能得到大大的提升。

Ndk-build 编译

NDK开发套件提供了一系列开发工具,其中的ndk-build用来快速生成原生应用程序。
ndk-builer使用application.mk,和android.mk作为脚本文件。
application.mk是可选的,用来说明生成的文件的二进制格式等特性。
android.mk是ndk-builer的编译脚本,描述了项目的编译选项,将要编译的文件,依赖库等。

LOCAL_PATH := $(call my-dir)
//定义本地源码的路径
include $(CLEAR_VARS)
//清除掉一些已经定义的宏
LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
//在5.0以上Android系统上使用必须指定项
LOCAL_ARM_MODE  := arm
//arm指令模式
LOCAL_MODULE    := Hello
//模块名称
LOCAL_SRC_FILES := Hello.c
//c或者c++源文件列表
include $(BUILD_EXECUTABLE)
//指定生成文件的类型,BUILD_EXECUTABLE生成可执行文件,BUILD_SHARED_动态库,BUILD_STATIC_LIBRARY静态库

Hello World例子

#include 

int main()
{
    printf("Hello  World!\n");
    return 0;
}
  1. 把源代码保存为Hello.c,复制到到jni目录下与android.mk,application.mk文件放在一起。

  2. 运行ndk-build命令,在lib/armeabi-v7a目录下生成Hello文件,并把Hello文件复制到jni目录下。

  3. 运行模拟器,执行adb push Hello /data/local/tmp。

  4. 运行cd /data/local/tmp,再运行chomod 777 Hello 命令,增加权限。

  5. 运行./Hello , 输出Hello World.

你可能感兴趣的:(Android逆向(002) NDK-BUILD 编译Hello World)