安卓高级主题——NDK
参考博客: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相关推荐
- 动脑学院安卓视频 安卓高级课程 VIP课程 分享
里面内容包括,移动架构,高级UI,NDK,算法,等等还有一部分自己 收集的公开课视频 动脑学院安卓视频 安卓高级课程 VIP课程 链接: pan.baidu.com/s/1mhPOYt6 密码:tmv ...
- Redis 高级主题之布隆过滤器(BloomFilter)
最近计划准备整理几篇关于Reids高级主题的博文,本文整理的是关于布隆过滤器在Redis中如何应用,先来一张思维导图浏览全文. 1. 认识BloomFilter 1.1 原理 布隆过滤器,英文叫Blo ...
- Spread for Windows Forms高级主题(3)---单元格的编辑模式
理解单元格的编辑模式 通常情况下,当终端用户双击单元格时,编辑控件将允许用户在该单元格中输入内容.在一个单元格中编辑的能力被称为编辑模式.一些属性和方法可以用来自定义编辑模式的使用. 当一个单元格处于 ...
- Spread for Windows Forms高级主题(5)---数据处理
2019独角兽企业重金招聘Python工程师标准>>> 使用表单的API处理数据 你可以将数据以有格式或无格式字符串或者数据对象的形式填充到单元格中.将数据填充到单元格的最好方式取决 ...
- Spread for Windows Forms高级主题(7)---自定义打印的外观
2019独角兽企业重金招聘Python工程师标准>>> 表单打印的多个部分都可以进行自定义,大多数的自定义选项存在于PrintInfo对象中.大多数打印选项是在PrintInfo对象 ...
- 分享21款漂亮的WordPress高级主题
WordPress 是最流行的博客系统,各种主题非常多,其中很多的高级主题(Premium Theme)都是要付费购买的,今天本文收集到21款免费的 WordPress 高级主题分享给大家. Bol ...
- 安卓手机主题软件_类似主题软件下载-类似主题安卓官方版下载v2.6.6.3
类似主题app,介绍给大家,是一款可以让我们在线进行主题变幻,拥有更多特色主题风格的服务平台.有了它用户就可以体验不同机型的主题风格,不论苹果还是安卓都是支持的,喜欢的不妨来下载看看! [类似主题应用 ...
- Spread for Windows Forms高级主题(6)---数据绑定管理
自定义列和区域的数据绑定 当表单被绑定到一个数据集时,表单中的列就会相继的被分配到数据集的区域上.例如,第一个数据域分配给列A,第二个数据区域分配给列B,等等.你也可以改变分配顺序,将任意域分配给任意 ...
- Spread for Windows Forms高级主题(4)---自定义用户交互
你可以从多方面自定义用户界面来自定义用户与Spread控件的交互方式.同时,你还可以自定义如何处理用户交互方式. 设置允许用户进行的操作 下面的列表总结了通过控件的数据区域,你可以授权用户进行的操作( ...
最新文章
- 基于TensorFlow理解三大降维技术:PCA、t-SNE 和自编码器
- Linux监控进程的iops,linux性能监控工具--Collectl
- 元气骑士没有手柄怎么解锁机器人_机器人怎么解锁(元气骑士机器人)
- 安装分布式文件系统MooseFS
- 【飞秋】基于Html5的Canvas实现的Clocks (钟表)
- matlab 扫雷命令,Matlab版扫雷
- mysql 中序号要怎么写_如何在mysql的字段ID中插入自动编号?
- [BZOJ4756]Promotion Counting
- php的布局设计,php学习之div+css布局设计排版(六)
- git 分支merge主分支 解决冲突
- logback按等级输出到不同日志文件
- Base64序列化和反序列化
- FPGA 二选一数据选择器
- wps演示怎么提高列表级别_wps文字如何设置标题级别?wps设置标题级别教程
- 【软件构造】过程与配置管理
- [免费配音软件]语音合成,让阿里云小姐姐为你的视频配音
- 屏幕旋转后字体会变大问题
- 【无标题】换向阀故障判断与维修
- 一张纸对折多少次厚度超过珠峰高度
- [附源码]Python计算机毕业设计大学生二手物品交易网站