Android NDK基本配置

Windows下Android ndk 配置

ndk包
本次安装用的是android ndk 版本为 android-ndk-r12b-windows-x86_64
环境变量配置
将解压后的ndk路径添加到PATH中,本机为“D:/ndk”
Android项目配置
1.新建Android项目,local.properties加入ndk.dir=D:\ndk
2.完成后,右键app -> new -> folder -> jnifolder
3.新建java类

public class HelloJni {
    static {
        System.loadLibrary("hello");
    }
    public native String sayHello();
}

4.gradle 配置

defaultConfig {
        applicationId "nexecheck.kstech.com.test_android"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        sourceSets.main{
            jniLibs.srcDir 'src/main/libs'
        }
        ndk{
            moduleName 'hello'
        }
    }

需要在gradle.properties中设置android.useDeprecatedNdk=true
5.生成.h文件
需要在Java中使用调用NDK的方法,首先要先生成.h头文件,jni的.h文件很麻烦,我们可以通过javah命令自动生成。
在app/目录下运行命令:

javah -d src/main/jni/ -classpath build/intermediates/classes/debug/ com.example.jjz.jni.HelloJni
其中-d是生成.h文件的保存目录
-classpath是指定.class所在的目录,项目build成功之后,会在build/intermediates/classes/debug/目录里生成.class文件。
nexecheck.kstech.com.test_android.HelloJni是包名加上类名。
就可以在jni目录下得到一个com_example_jjz_jni_HelloJni.h的文件  

6.实现.h文件
新建文件nexecheck_kstech_com_test_android_HelloJni.c文件实现sayHello方法。

#include <jni.h>
#include "nexecheck_kstech_com_test_android_HelloJni.h"
JNIEXPORT jstring JNICALL Java_nexecheck_kstech_com_test_1android_HelloJni_sayHello
  (JNIEnv *env, jobject clazz){
    return (*env)->NewStringUTF(env,"hello world jni");
  }

7.创建成功后,进入project视图,在jni文件夹中创建Android.mk和Application.mk文件,内容如下:

Android.mk-----------------------------------------------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := nexecheck_kstech_com_test_android_HelloJni.c
include $(BUILD_SHARED_LIBRARY)
Android.mk-----------------------------------------------------------

Application.mk-----------------------------------------------------------
APP_MODULES:= hello
Application.mk-----------------------------------------------------------  

详细配置请查阅
android_ndk文档:https://developer.android.google.cn/ndk/guides/application_mk.html

8.ndk-build
在../app/src/main/jni目录下,运行命令 ndk-build
结果:

D:\APPs\test_android\app\src\main\jni>ndk-build
[arm64-v8a] Compile        : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[arm64-v8a] SharedLibrary  : libhello.so
[arm64-v8a] Install        : libhello.so => libs/arm64-v8a/libhello.so
[x86_64] Compile        : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[x86_64] SharedLibrary  : libhello.so
[x86_64] Install        : libhello.so => libs/x86_64/libhello.so
[mips64] Compile        : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[mips64] SharedLibrary  : libhello.so
[mips64] Install        : libhello.so => libs/mips64/libhello.so
[armeabi-v7a] Compile thumb  : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[armeabi-v7a] SharedLibrary  : libhello.so
[armeabi-v7a] Install        : libhello.so => libs/armeabi-v7a/libhello.so
[armeabi] Compile thumb  : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[armeabi] SharedLibrary  : libhello.so
[armeabi] Install        : libhello.so => libs/armeabi/libhello.so
[x86] Compile        : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[x86] SharedLibrary  : libhello.so
[x86] Install        : libhello.so => libs/x86/libhello.so
[mips] Compile        : hello <= nexecheck_kstech_com_test_android_HelloJni.c
[mips] SharedLibrary  : libhello.so
[mips] Install        : libhello.so => libs/mips/libhello.so
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值