参考博客:https://blog.csdn.net/Hi_Red_Beetle/article/details/78994767

安装配置参考博客:https://blog.csdn.net/young_time/article/details/80346631

ndk:

NDK是Native Developmen Kit的简称,它是一个工具集,集成了android的交叉编译环境,并提供了一套比较方便的MakeFile,可以帮助开发者快速开发C或是C++的动态库,并自动将so和java程序打包成apk,在Android上运行。

jni:

JNI是Java Native Interface的缩写,中文为JAVA本地调用,允许Java代码和其他语言写的代码进行交互。

配置

第一步:在SDK Manager-->SDK tools中勾选LLDB以及NDK

第二步:在Project Strcture-->SDK Location中选择NDK location的目录

成功会在local.properties中出现

ndk.dir=E\:/Android\\sdk\\ndk-bundle sdk.dir=E\:\\Android\\sdk

JNI程序实现步骤

  • 编写带有native声明的方法的java类
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private EditText editText_num1,editText_num2;private TextView textView_result;//加载动态链接库static {System.loadLibrary("hello");}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText_num1 = (EditText)findViewById(R.id.editText);editText_num2 = (EditText)findViewById(R.id.editText2);textView_result = (TextView)findViewById(R.id.textView);}//声明一个本地方法,该方法由c++实现public native int add(int num1,int num2);public void addClick(View view) {String num1 = editText_num1.getText().toString();String num2 = editText_num2.getText().toString();//调用本地方法int result = add(Integer.parseInt(num1),Integer.parseInt(num2));textView_result.setText(textView_result.getText().toString()+result);}
}
  • 使用javac命令编译所编写的java类,使用javah+java类名生成扩展名为h的头文件

在Terminal中进入java目录

再输入 javah -jni com.example.ndkapplication.MainActivity,就会获得以下的.h文件

在main文件夹中创建jni文件,然后将.h文件放入jni中

  • 使用c/c++实现本地方法

在jni中新建一个.c文件

#include "com_example_ndkapplication_MainActivity.h"
JNIEXPORT jint JNICALL Java_com_example_ndkapplication_MainActivity_add(JNIEnv * env, jobject obj, jint num1, jint num2){return num1 + num2;}
  • 将C/C++编写的文件生成动态链接库

在jni中新建一个Android.mk文件  注:下面的注解要删除

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c //源代码文件
include $(BUILD_SHARED_LIBRARY) //说明编译的是共享库及动态链接库

在jni目录下ndk-build

成功会在libs/armeabi目录生成

最后,在app的build.gradle中加入

android {defaultConfig {ndk{moduleName "hello"}}sourceSets.main{jniLibs.srcDir 'src/main/libs'jni.srcDirs=[]}
}

运行结果:

安卓高级主题——NDK相关推荐

  1. 动脑学院安卓视频 安卓高级课程 VIP课程 分享

    里面内容包括,移动架构,高级UI,NDK,算法,等等还有一部分自己 收集的公开课视频 动脑学院安卓视频 安卓高级课程 VIP课程 链接: pan.baidu.com/s/1mhPOYt6 密码:tmv ...

  2. Redis 高级主题之布隆过滤器(BloomFilter)

    最近计划准备整理几篇关于Reids高级主题的博文,本文整理的是关于布隆过滤器在Redis中如何应用,先来一张思维导图浏览全文. 1. 认识BloomFilter 1.1 原理 布隆过滤器,英文叫Blo ...

  3. Spread for Windows Forms高级主题(3)---单元格的编辑模式

    理解单元格的编辑模式 通常情况下,当终端用户双击单元格时,编辑控件将允许用户在该单元格中输入内容.在一个单元格中编辑的能力被称为编辑模式.一些属性和方法可以用来自定义编辑模式的使用. 当一个单元格处于 ...

  4. Spread for Windows Forms高级主题(5)---数据处理

    2019独角兽企业重金招聘Python工程师标准>>> 使用表单的API处理数据 你可以将数据以有格式或无格式字符串或者数据对象的形式填充到单元格中.将数据填充到单元格的最好方式取决 ...

  5. Spread for Windows Forms高级主题(7)---自定义打印的外观

    2019独角兽企业重金招聘Python工程师标准>>> 表单打印的多个部分都可以进行自定义,大多数的自定义选项存在于PrintInfo对象中.大多数打印选项是在PrintInfo对象 ...

  6. 分享21款漂亮的WordPress高级主题

     WordPress 是最流行的博客系统,各种主题非常多,其中很多的高级主题(Premium Theme)都是要付费购买的,今天本文收集到21款免费的 WordPress 高级主题分享给大家. Bol ...

  7. 安卓手机主题软件_类似主题软件下载-类似主题安卓官方版下载v2.6.6.3

    类似主题app,介绍给大家,是一款可以让我们在线进行主题变幻,拥有更多特色主题风格的服务平台.有了它用户就可以体验不同机型的主题风格,不论苹果还是安卓都是支持的,喜欢的不妨来下载看看! [类似主题应用 ...

  8. Spread for Windows Forms高级主题(6)---数据绑定管理

    自定义列和区域的数据绑定 当表单被绑定到一个数据集时,表单中的列就会相继的被分配到数据集的区域上.例如,第一个数据域分配给列A,第二个数据区域分配给列B,等等.你也可以改变分配顺序,将任意域分配给任意 ...

  9. Spread for Windows Forms高级主题(4)---自定义用户交互

    你可以从多方面自定义用户界面来自定义用户与Spread控件的交互方式.同时,你还可以自定义如何处理用户交互方式. 设置允许用户进行的操作 下面的列表总结了通过控件的数据区域,你可以授权用户进行的操作( ...

最新文章

  1. 基于TensorFlow理解三大降维技术:PCA、t-SNE 和自编码器
  2. Linux监控进程的iops,linux性能监控工具--Collectl
  3. 元气骑士没有手柄怎么解锁机器人_机器人怎么解锁(元气骑士机器人)
  4. 安装分布式文件系统MooseFS
  5. 【飞秋】基于Html5的Canvas实现的Clocks (钟表)
  6. matlab 扫雷命令,Matlab版扫雷
  7. mysql 中序号要怎么写_如何在mysql的字段ID中插入自动编号?
  8. [BZOJ4756]Promotion Counting
  9. php的布局设计,php学习之div+css布局设计排版(六)
  10. git 分支merge主分支 解决冲突
  11. logback按等级输出到不同日志文件
  12. Base64序列化和反序列化
  13. FPGA 二选一数据选择器
  14. wps演示怎么提高列表级别_wps文字如何设置标题级别?wps设置标题级别教程
  15. 【软件构造】过程与配置管理
  16. [免费配音软件]语音合成,让阿里云小姐姐为你的视频配音
  17. 屏幕旋转后字体会变大问题
  18. 【无标题】换向阀故障判断与维修
  19. 一张纸对折多少次厚度超过珠峰高度
  20. [附源码]Python计算机毕业设计大学生二手物品交易网站

热门文章

  1. Linux通过ssh传输文件
  2. 2022年河北省高职单招(数学)考试冲刺试题及答案
  3. xpt 2046的触摸屏 rt thread设备驱动框架
  4. 微信小程序-简单table表格
  5. Linux 中config命令的使用
  6. 喜马拉雅单个无版权下载
  7. Mac系统下隐藏显示文件夹
  8. Mozilla,一个被遗忘的伟大科技的公司!
  9. word中通过宏对某章节下图片批量插入题注
  10. 第10章第18节:使用iSlide的全图幻灯片命令将所有内容都转为图片 [PowerPoint精美幻灯片实战教程]