ubuntu搭建Android NDK环境与Android Studio简单使用NDK

NDK下载、安装

官网下载地址:https://developer.android.com/ndk/downloads/index.html
也可以去这里下载:http://www.androiddevtools.cn/
选择Linux版本即可。

解压缩下载得到的压缩包,移动到想要放置的位置。
我放在home/Android文件夹下
ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第1张图片

打开终端,输入gedit ~/.bashrc 打开配置文件,添加如下环境变量

export NDK_HOME=/home/sxy/Android/android-ndk-r13b
export PATH=$PATH:${NDK_HOME}

保存退出,输入source ~/.bashrc 使之生效。

在Android Studio中使用NDK

在android studio中新建工程NDKDemo,然后在工程下新建一个module作为ndk库文件。我这里取名ndklibrary
ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第2张图片

在ndklibrary的src/main/java下新建java文件JNIUtils,并添加代码

package com.sxy.ndklibrary;

/**
 * Created by sxy on 17-3-4.
 */

public class JNIUtils {
    static {
        System.loadLibrary("NDKLibrary");
    }

    public static native String getStringFromNative();
}

点击Build –> Make Module ‘ndklibrary’
编译成功后会在ndklibrary/build/classes/debug/com/sxy/ndklibrary下生成JNIUtils.class文件。

点击View –> Tool Windows –> Terminal,打开Android Studio中的Terminal 命令行工具。
把路径跳转至ndklibrary/src/main目录下。使用javah命令生成.h头文件。

sxy@sxy-ThinkPad-E560:~/AndroidStudioProjects/NDKDemo$ cd ndklibrary/src/main
sxy@sxy-ThinkPad-E560:~/AndroidStudioProjects/NDKDemo/ndklibrary/src/main$  javah -d jni -classpath ../../build/intermediates/classes/debug com.sxy.ndklibrary.JNIUtils

ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第3张图片

命令执行成功后会在main文件夹下生产jni文件夹,里面有生成的头文件com_sxy_ndklibrary_JNIUtils.h

在jni文件夹下新建com_sxy_ndklibrary_JNIUtils.c文件,用来实现native方法

#include "com_sxy_ndklibrary_JNIUtils.h"
/*
 * Class:     com_sxy_ndklibrary_JNIUtils
 * Method:    getStringFromNative
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_sxy_ndklibrary_JNIUtils_getStringFromNative
  (JNIEnv *env, jclass jobj){
        return (*env)->NewStringUTF(env,"this is my JNI!!!!");}

配置NDK

打开项目中的local.properties文件添加NDK路径

ndk.dir=/home/sxy/Android/android-ndk-r13b

打开ndklibrary中的build.gradle,在defaultConfig中添加

ndk {
    moduleName "NDKLibrary"
    abiFilters "armeabi", "armeabi-v7a", "x86"
}

注意:这里的moduleName须跟JNIUtils中System.loadLibrary("NDKLibrary");里的名称相同。

此时编译项目遇到 Error: Your project contains C++ files but it is not using a supported native build system错误,参考http://blog.csdn.net/lanuage/article/details/53072303
在工程目录下的gradle.properties文件的末尾加上一句:Android.useDeprecatedNdk=true 。得以解决。

然后重新编译项目,得到.so文件
ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第4张图片

打开app的build.gradle文件,在dependencies中写入compile project(':ndklibrary')添加依赖关系。
ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第5张图片

最后即可在MainActivity中调用native方法。
ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第6张图片
运行项目即可看到效果
ubuntu搭建Android NDK环境与Android Studio简单使用NDK_第7张图片

你可能感兴趣的:(Android,Linux)