NDK的基础教程 一 最简单的NDK使用
来源:互联网 发布:php 获取useragent 编辑:程序博客网 时间:2024/05/29 07:57
首先说明我使用的是Android Studio
开始我们需要配置NDK的环境,然后才能使用NDK,步骤如下
1 . 下载和安装NDK
地址:https://developer.android.google.cn/ndk/downloads/index.html
2 . 点菜单栏的File->ProjectStructure…->在打开的窗口中左侧选中SDKLocation->在右侧Android NDK Location中填入NDK目录所在路径
3 . 新建工程
4 . 在app模块的build.gradle文件里添加代码,就是ndk那块
android { compileSdkVersion 23 buildToolsVersion "26.0.0" defaultConfig { applicationId "android.com.myapplication" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName"myNativeLib" ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "x86" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}
5 . 在gradle.properties文件里添加代码
android.useDeprecatedNdk=true
6 . 在local.properties文件里添加代码
ndk.dir=F:\NDK\android-ndk-r13
7 . 在java里直接写出调用c语言的代码
8. public class MainActivity extends AppCompatActivity{ static { System.loadLibrary("myNativeLib"); } 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(getStringFromNative() + ""); } public native String getStringFromNative();}
8 . 通过terminal使用cd命令到达本工程的src/main/java目录下输入
javah -d ../jni 你的包名.引用本地方法的类的名称
比如:
C:\Users\Administrator\AndroidStudioProjects\MyApplication5>cd appC:\Users\Administrator\AndroidStudioProjects\MyApplication5\app>cd srcC:\Users\Administrator\AndroidStudioProjects\MyApplication5\app\src>cd mainC:\Users\Administrator\AndroidStudioProjects\MyApplication5\app\src\main>cd javaC:\Users\Administrator\AndroidStudioProjects\MyApplication5\app\src\main\java>javah -d ../jni android.com.myapplication.MainActivity
9 . 这样main下面会出现一个jni文件夹且里面还有一个名字很长的h文件,然后我们随便写一个cpp文件,然后输入代码,它会自动出现与之对应的h文件
比如:
//// Created by Administrator on 2017/8/4.//#include "main.h"#include <jni.h>#include <android/log.h>#ifndef LOG_TAG#define LOG_TAG"ANDROID_LAB"#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)#endif/* Header for class lab_sodino_jnitest_MainActivity */#ifndef _Included_android_com_myapplication_MainActivity#define _Included_adroid_com_ndk_MainActivity#ifdef __cplusplusextern "C" {#endif/* * Class:lab_sodino_jnitest_MainActivity * Method: getStringFromNative * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_android_com_myapplication_MainActivity_getStringFromNative (JNIEnv *env, jobject jObj){ LOGE("log string from ndk."); return env->NewStringUTF("HelloFrom JNI!");}#ifdef __cplusplus}#endif#endif
10 . 编译运行在手机上看效果
结束了,以后我还会继续写这个NDK教程,但是对于一些文件配置我不会写第二遍,到时候我直接贴这个博文的链接。
下一次写一下关于java语言调用不同种类的c语言函数
阅读全文
0 0
- NDK的基础教程 一 最简单的NDK使用
- 最简单的使用 NDK 的程序
- NDK的简单使用
- NDK的简单使用
- android ndk 的简单使用
- 最简单的PlayBook NDK应用
- 最简单的android NDK环境搭建
- Android之一个简单的NDK使用(一)
- NDK的基础教程 六 so库的创建和使用
- NDK的简单调用
- linux下NDK的简单使用
- Android NDK JNI 的简单使用
- android studio JNI/NDK的简单使用
- NDK的基础教程 三 传递数组
- NDK的基础教程 四 动态注册
- NDK的基础教程 五 登录判断
- 最简单 NDK 例子
- 最简单的ndk示例程序及编译过程
- 判断素数
- Collections和Collection的区别
- windows环境安装VMware,并且安装CentOS7 虚拟机
- BZOJ3884 上帝与集合的正确用法 (欧拉定理)
- MongoDB 常用基本命令
- NDK的基础教程 一 最简单的NDK使用
- PAT 1123. Is It a Complete AVL Tree (30)
- 使用VS Code进行C语言学习
- link和@import的区别
- Spring所遵循的发布版本命名规则
- 聊天web项目
- Python 基础 ——异常与错误处理
- easyUI 动态生成表头,与动态绑定数据,实现代码
- Tomcat