关闭

Ndk android studio 开发详细流程

标签: androidndkjnistudio
280人阅读 评论(0) 收藏 举报
分类:

今天写点关于NDK 的一些东西

先简单说下流程吧,后期再慢慢深入讲解

首先先安装ndk ,网上教程很多,这里就不做讲解。


step1  给你的Android studio 配置Ndk的路径

新建一个项目,在File->Project Structure 下设置

 


step2  新建JniUtils类实现native方法

package ruiyi.myjni;

/**
 * Created by ruiyi on 2016/5/31.
 */
public class JniUtils {

    public static native String getStringFormC();
}
然后clean project 再rebuild project 生成class文件,
在app/build/intermediates看是否生成了classes文件夹,没有生成请重新来过。

step3 生成.h文件

利用工具terminal , 这个工具在view-->Tool Windows -->terminal


在terminal输入指令

cd app/build/intermediates/classes/debug
然后再输入指令
javah -jni ruiyi.myjni.JniUtils
注意 这里javah -jni后面跟的是JniUtils类的全路径,如果javah报不存在之类的,是你的java环境没有配置好。

这时候打开classes/debug下面的文件发现多了一个文件

ruiyi.myjni_JniUtils.h

.h 代码如下

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ruiyi_myjni_JniUtils */

#ifndef _Included_ruiyi_myjni_JniUtils
#define _Included_ruiyi_myjni_JniUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     ruiyi_myjni_JniUtils
 * Method:    getStringFormC
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_ruiyi_myjni_JniUtils_getStringFormC
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif


step4 将生成的.h文件放入到项目中去

位置是在src/main 下新建文件夹jni,把生成的.h文件复制或者剪切到jni文件夹下面去,新建一个c类随便取一个名字,

我的.c文件代码如下

#include "ruiyi_myjni_JniUtils.h"

/*
 * Class:     ruiyi_myjni_JniUtils
 * Method:    getStringFormC
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_ruiyi_myjni_JniUtils_getStringFormC
        (JNIEnv *env, jobject obj){
   return (*env)->NewStringUTF(env,"这里是");}

step5 声明权限和配置gradle

在gradle.properties文件末尾添加 ,如果项目没有此文件,新建一个即可

android.useDeprecatedNdk=true

然后在app文件下得build.gradle ->defaultConfig括号内添加如下代码
ndk {    
   moduleName "ruiyi"          //生成的so名字
   abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。
}


step6 使用

首先在你的JniUtils类里面添加如下代码

static {    
   System.loadLibrary("ruiyi");//之前在build.gradle里面设置的so名字,必须一致
}

在调用出

public class MainActivity extends AppCompatActivity {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.tv);
        tv.setText(JniUtils.getStringFormC());
    }
}

step7 结果截图


就这样。。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

android studio下的NDK开发详解(一)

好记性不如烂笔头,开始坚持写博客,学一点记一点,只为了生活更好。 学了一年多的硬件,现在来做android,不知道是对是错,跟着感觉走,开始总是想把android和硬件挂上勾,所以第一个android应用写的是关于蓝牙的。现在学习NDK开发,有时说得也是JNI开发。那为什么要学习JNI,JNI会学习...
  • tuoguang
  • tuoguang
  • 2015-09-01 01:05
  • 4582

使用Android Studio与Eclipse开发NDK的对比

最近开发的一个项目中用到了JNI,所以针对Android的两大IDE开发NDK做了一下对比。Android Studio开发NDK的配置我使用的是稳定版的2.0的插件,默认情况下它是不支持NDK的,即如果你在build.gradle中配置了ndk属性是无法别识别的。这个时候我们只需要在gradle....
  • pcsxk
  • pcsxk
  • 2016-04-26 18:54
  • 1503

NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西;另外就是为了效率更加高些。如果你在Eclipse+ADT下开发过NDK就能体会到要么是配置NDK还要下...
  • yanbober
  • yanbober
  • 2015-04-27 13:23
  • 88000

在AndroidStudio2.3.2下JNI开发的详细步骤

安装NDK在工具栏点击File->Settings->Appearance & Behavior->System Settings->Android SDK->SDK Tools选中LLDB和NDK,点击确认,软件会自动安装NDK。 默认安装路径: 你的sdk路...
  • luhaoying1111
  • luhaoying1111
  • 2017-05-18 15:04
  • 813

AndroidStudio中的NDK开发初探

前段时间由于做比赛的事,一直都没时间写博客,现在终于可以补上一篇了,一直想学习一点NDK开发的知识,但是迟迟没有动手,正好有一个NDK相关的项目机会,便查阅了一些资料,遂将学习的一些心得方法记录于此。
  • bingjianIT
  • bingjianIT
  • 2017-07-20 17:40
  • 2955

AndroidStudio2.2开发NDK的正确姿势

AndroidStudio2.2开发NDK,拜拜android.mk,你好CMake!!!
  • dagaozi
  • dagaozi
  • 2016-10-11 09:32
  • 11647

AndroidStudio中的NDK开发初探

前段时间由于做项目紧,一直都没时间写博客,现在终于可以补上一篇了,一直想学习一点NDK开发的知识,但是迟迟没有动手,正好有一个NDK相关的项目机会,便查阅了一些资料,遂将学习的一些心得方法记录于此。
  • Xk632172748
  • Xk632172748
  • 2017-08-04 00:18
  • 534

Android-使用Android studio 进行NDK-JNI开发实例(一)

前言 使用Android studio 进行NDK-JNI开发,在界面上显示Hello NDK-JNI 步骤: 1. 创建工程 2. 配置NDK 路径 local.properties 文件中加入 ndk路径ndk.dir=E\:\\Android-NDK\\android-ndk-r10...
  • u014657752
  • u014657752
  • 2015-08-30 19:03
  • 4872

Android Studio进行NDK开发笔记

使用的是AS2.1.2版本方案一 AS自带的有NDK插件,但是会出现Deprecated错误。解决方法:按提示操作即可。 AS的NDK插件不需要编写Application.mk和Android.mk,所以自己编写的无效!!,关键是那插件功能太弱了(很多Android.mk的属性不能修改)。如果想用自...
  • enlangs
  • enlangs
  • 2016-07-11 16:15
  • 5351

AndroidStudio3.0开发调试安卓NDK的C++代码

一、新建项目新建项目,没有发现Include C++ Support 选项。因为印象中是有过该选项的,找了半天没找到。后来无意间拖了下窗口大小,原来是被隐藏了,真特么坑。新建一个测试项目,勾选Include C++ Support 选项,看看工程上有哪些不同。1、gradle首先看gradle文件,...
  • asmcvc
  • asmcvc
  • 2017-12-01 19:33
  • 1335
    个人资料
    • 访问:16706次
    • 积分:625
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条