Android Studio中的NDK开发

最近研究了下Android Studio中的NDK开发

一、NDK配置

1、在Project的local.properties文件添加NDK路径

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Mon Jun 05 10:03:15 CST 2017
ndk.dir=D\:\\Android\\android-sdk\\ndk-bundle
sdk.dir=D\:\\Android\\android-sdk
2、打开app Module的build.gradle文件,在defaultConfig节点里添加以下代码

defaultConfig {
        ndk {
            moduleName "HelloWord"         //生成的so名字
            abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。
        }
    }
3、在gradle.properties中加上一句话

android.useDeprecatedNdk=true


二、java代码与c代码编写

1、新建一个类HelloWord.java,声明native方法,方法由java声明,在c/c++中实现

package com.example.dai.jnitest;

public class HelloWord {
    public native String printf();

    public static void main(String[] args) {
        new HelloWord().printf();
    }

    static {
        System.loadLibrary("HelloWord");
    }
}

2、编译代码,生成HelloWord.class文件,如下图所示:



3、在AndroidStudio中调出命令编译工具Terminal:



4、生成头文件

Terminal中默认指向JNITest工程目录,敲命令指向HelloWord.java文件所在的目录,


使用javah -jni com.example.dai.jnitest.HelloWord自动生成.h文件



5、在app\src\main目录下,新建一个jni文件夹,把com_example_dai_jnitest_HelloWord.h文件复制进去,新建一个.c文件,实现com_example_dai_jnitest_HelloWord.h文件中的函数

#include "com_example_dai_jnitest_HelloWord.h"

/*
 * Class:     com_example_dai_jnitest_HelloWord
 * Method:    printf
 * Signature: ()V
 */
JNIEXPORT jstring JNICALL Java_com_example_dai_jnitest_HelloWord_printf
  (JNIEnv *env, jobject obj){
        return (*env)->NewStringUTF(env,"This is a test!");
  }
6、Rebuild Project生成so文件


7、so库文件的使用

在app\src\main下,新建jniLibs文件夹,将so文件放入


注意:可以指定so文件的位置,在app的build.gradle中的android节点加入

//指定so库的位置
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

然后在app\libs中使用即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值