最近在學習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再來記錄
參考資料