交叉编译
- 在一个平台去编译另一平台上可以执行的本地代码
- cpu平台 arm x86 mips 编译指令集不一样
- 操作系统平台 windows Linux max os
- 原理 模拟不同平台的特性去编译代码
开发工具
- ndk : native develop kit 下载地址
步骤
- 下载对应平台ndk软件包并配置到环境变量path中
- 新建android工程,用native声明本地方法,调用本地方法:如下
public native String helloJNI();
- 实现本地方法,根目录下新建jni文件夹并建hello-jni.c的源文件:如下
#include <jni.h>
jstring Java_com_example_jni_test_MainActivity_helloJNI(JNIEnv *env,jobject obj){
char *str = "Hello world";
return (*env)->NewStringUTF(env,str);
}
- 在jni文件夹下新建Android.mk的编译配置文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
- 命令编译ndk-build
- 动态加载库System.loadLibrary(“hello-jni”);