Android-NDK開發(一)

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


參考資料

http://blog.csdn.net/jdh99/article/details/51765441

發佈了104 篇原創文章 · 獲贊 99 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章