最近在学习NDK相关知识,边学边记录以备后用
NDK开发环境搭建
Android Studio下NDK开发环境搭建不用像Eclipse下那么复杂,首先是NDK安装
安装完成后会在SDK对应目录下出现
配置环境变量到path
新建 NDK_ROOT,如:D:\Android\sdk1\ndk-bundle
在path中增加%NDK_ROOT%
NDK开发之FoodManager
先新建一个项目开发一个demo,跑一边基本流程
添加NDK支持
android.useDeprecatedNdk=true
编写FoodManager
package idea.analyzesystem.study.ndk;
/**
* Created by idea on 2017/9/18.
*/
public class FoodManager {
static {
System.loadLibrary("food");
}
public native int getPrice();
}
生成.class文件
通过make project(ctr+F9)会在 app>build相应目录下生成class文件
编译生成.h头文件
打开Terminal命令面板(alt+F12),根据命令编译生成jni 目录和头文件
/***javah -d 生成jni路径 -classpath 工程项目下build对应的debug 包名.文件名*/
javah -d xxx\xxx\jni -classpath xxx\xxx\xx\debug xxx.xxx.xxx.xxx
- 编写.c文件
//
// Created by idea on 2017/9/18.
//
#include "idea_analyzesystem_study_ndk_FoodManager.h"
JNIEXPORT jint Java_idea_analyzesystem_study_ndk_FoodManager_getPrice (JNIEnv* env, jobject jobject1){
return 0x01;
}
- 编写Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := food
LOCAL_SRC_FILES := foodmanager.c
include $(BUILD_SHARED_LIBRARY)
- 编写Application.mk文件
APP_PLATFORM := android-14
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
APP_STL := stlport_static
APP_OPTIM := debug
- 编译生产.so库
将编译好的so库放到app工程下的libs目录,build.gradle文件添加代码如下:
android{
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
- 运行结果
以上内容为初次体验,具体怎么编写代码转换、mk文件说明待后续blog再来记录
参考资料