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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值