NDK的简单使用
来源:互联网 发布:剑三叽太捏脸数据 编辑:程序博客网 时间:2024/06/03 23:44
1,root gradle中配置radle-experimental插件
classpath 'com.android.tools.build:gradle-experimental:0.7.0'
2,app gradle中较多细节配置,这里就直接贴代码了apply plugin: 'com.android.model.application'/*todo 首先在apply的时候我们引入的插件名称由'com.android.application'变成了'com.android.model.application'。todo 其次,在原来android的外层加入了一个model层次。todo 再次,原来在android的里面的块,除了defaultConfig外,全部移除android块放入model块中与android并列,并且前面的名字加上android.。todo 然后,compileSdkVersion 23与 buildToolsVersion "23.0.2"改成 compileSdkVersion = 23和buildToolsVersion = "23.0.2",中间加上了=。todo 其次,添加上android.ndk块,块中的moduleName表示C/C++代码打包成so文件的名字。todo 再次,android.buildTypes块中的proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'改成proguardFiles.add(file("proguard-rules.txt"))。todo 最后,注意dependencies块依然在最外层,它不在model块中。*/model{ android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig { applicationId "com.xinguang.ndkdemo" minSdkVersion.apiLevel 15 targetSdkVersion.apiLevel 23 versionCode 4 versionName "1.0.1" } } android.ndk { moduleName "lavor" ldLibs.addAll(['log']) cppFlags.add("-std=c++11") cppFlags.add("-fexceptions") platformVersion 15 stl 'gnustl_shared' } android.buildTypes { release { minifyEnabled = false proguardFiles.add(file("proguard-rules.txt")) } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.android.support:design:23.1.1'}3,在Android程序中添加一个native方法:
public native String getString();
4,根据提示生成对应的c方法#include <jni.h>JNIEXPORT jstring JNICALLJava_com_xinguang_ndkdemo_MainActivity_getString(JNIEnv *env, jobject instance) { // TODO const char *returnValue ="this is test"; return (*env)->NewStringUTF(env, returnValue);}//todo 步骤二,生成一个与java目录同级的jni目录,在jni目录自动建立一个c文件,在c文件中实现刚才的native方法5,在Android程序中添加上加载so库文件的代码(名称定义在appGradle->Model->android.ndk->moduleName下),so文件地址:app\build\intermediates\transforms\mergeJniLibs\debug\folders\2000\1f\main\lib\
6,然后贴一下整体代码
public class MainActivity extends AppCompatActivity { //todo 步骤三:在Android程序中添加上加载so库文件的代码(名称定义在appGradle->Model->android.ndk->moduleName下) // todo so文件地址:app\build\intermediates\transforms\mergeJniLibs\debug\folders\2000\1f\main\lib\ static { System.loadLibrary("lavor"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView text = (TextView) findViewById(R.id.text); text.setText(getString()); } //todo 步骤一:在Android程序中添加一个native方法 public native String getString();}
参考网址:https://segmentfault.com/a/1190000005152343
猛戳这里下载demo
阅读全文
0 0
- NDK的简单使用
- NDK的简单使用
- android ndk 的简单使用
- NDK的基础教程 一 最简单的NDK使用
- 最简单的使用 NDK 的程序
- linux下NDK的简单使用
- Android NDK JNI 的简单使用
- android studio JNI/NDK的简单使用
- Android NDK简单使用
- android 使用Eclipse开发NDK的配置和简单使用
- ubuntu下jni的简单使用,不使用ndk工具
- ubuntu下jni的简单使用,使用ndk
- NDK的简单调用
- Android JNI/NDK 简单使用
- 简单易懂的Android --NDK环境搭建>基础使用过程
- Android studio2.2 NDK,JNI的简单使用
- 使用Android-studio简单实现一个NDK的例子
- Android Studio 中 Ndk的环境配置以及简单使用
- c程序设计入门课程练习代码合集1
- Day14作业 三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包)
- 全局变量、局部变量、静态变量和实例变量的区别(转载)
- qwb与电阻
- centos7 mysql数据库安装和配置
- NDK的简单使用
- 七分钟笔记——Git(名词解释)
- deepin react-native 开发环境搭建
- 数据结构之第一章 引论 及 课后题答案
- 知识学习——Hadoop OutputFormat
- LeetCode Roman to Integer
- com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
- 串.c
- JSON的简介和在Java中的使用