Android Studio中使用NDK/JNI

Android Studio中使用NDK/JNI

之前试过用eclipse配置过NDK/JNI,现在基本开发用Android Studio了,所有现在也用AS配置下。

1. 下载NDK,配置NDK。

从网上下载NDK包,解压,放到自己喜欢的位置。我是放到sdk目录下了。

这里写图片描述

打开AS,先随便打开个项目,依次点击:File ->ProjectStructure,然后如下图,选择ndk到你解压的路径。

这里写图片描述

这样第一步就好了。

2. 创建项目。

先新建一个项目,按照正常方式就好。
我建的项目名叫ndkDemo 。
这里写图片描述
这里写图片描述
然后一路next .

稍微修改下布局,便于后面显示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.ndkdemo.MainActivity">

    <TextView
        android:id="@+id/tv_msg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</LinearLayout>

然后再看主MainActivity代码

这里写图片描述

这里,我们加上个native的方法,这个方法就是我们要调用的C++方法,用于获取个字符串。

public native String getStringFromNative(); 

然后下面两个是调用。

System.out.println(getStringFromNative());
Toast.makeText(this, getStringFromNative(), Toast.LENGTH_LONG).show();

3. 编译出中间代码

这时我们Make Project一下项目

这里写图片描述

这里Make Project一下,是为了生成.calss下的文件。

这里写图片描述

然后就要用到我们的命令行了。

这里写图片描述

进来后默认是指向当前的工程目录,接下来输入命令:cd app\src\main 回车,切换到main目录下:如图:

这里写图片描述

然后运行javah命令 :javah -d jni -classpath D:\code\sdk\platforms\android-22\android.jar;….\build\intermediates\classes\debug com.example.administrator.ndkdemo.MainActivity

其中
这里写图片描述

运行后,再看我们的项目结构,就会发现对了些代码

这里写图片描述

打开发现已经有了中间代码

这里写图片描述

4. 编写C++代码

创建jni文件夹下创建jni.c文件

这里写图片描述

写入代码

#include "com_example_administrator_ndkdemo_MainActivity.h"

JNIEXPORT jstring JNICALL
Java_com_example_administrator_ndkdemo_MainActivity_getStringFromNative
    (JNIEnv * env, jobject obj){
    return (*env)->NewStringUTF(env,"NDK 测试成功");
}

其中

这里写图片描述

Java_com_example_administrator_ndkdemo_MainActivity_getStringFromNative方法要和头文件中的一致。

最后在运行前要配置下gradle文件

这里写图片描述

ndk{
moduleName “MyJni”
ldLibs “log”
abiFilters “armeabi”, “armeabi-v7a”, “x86”
}

然后看下gradle.properties中是否加入了下面这句话

android.useDeprecatedNdk=true

这里写图片描述

5. 运行

这里写图片描述

哈哈,看到弹出的提示了吧,这个字符串就是来自C++的。

源代码地址:http://download.csdn.net/detail/jfzl123/9703140

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值