NDK入门调程序
来源:互联网 发布:怎样在淘宝店上架商品 编辑:程序博客网 时间:2024/04/30 05:36
Android NDK 开发一般步骤(简单入手版)
首次在csdn中写博文,如有雷同不甚荣幸~亚当爱自拍:
编译工具: Android Studio
- 在所需Java类中声明Native方法
static { System.loadLibrary("JniTest");}public native String getStringFromNative();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_ndk);TextView textView = (TextView) findViewById(R.id.textNdk);textView.setText(getStringFromNative());}... prompt'''
- 编译成对应的class文件
make project一下,目的就是编译成对应的class文件。然后根据生成的class文件,利用javah生成对应的 .h头文件。 - Terminal操作
点开android studio 的Terminal标签页,默认进入到该项目的app文件夹下。如果在该目录下输入cd src\main 切换到main目录下 - 命令行操作
javah -d jni -classpath F:\androidSDK\platforms\android-22\android.jar;….\build\intermediates\classes\debug\ ui.NdkActivity
通过javah命令来生成对应的C头文件,….\build\intermediates\classes\debug\包名 .Class
查看在main目录下多了一个jni文件夹,里面有生成好的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class ui_NdkActivity */#include <android/log.h>/* Header for class ui_NdkActivity */#ifndef LOG_TAG#define LOG_TAG "ANDROID_LAB"#ifndef _Included_ui_NdkActivity#define _Included_ui_NdkActivity#ifdef __cplusplusextern "C" {#endif/* * Class: ui_NdkActivity * Method: getStringFromNative * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_ui_NdkActivity_getStringFromNative (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
- 复制.h文件修改后缀名变为.c
简单实现代码输出
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>#include <android/log.h>/* Header for class ui_NdkActivity */#ifndef LOG_TAG#define LOG_TAG"ANDROID_LAB"#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)#endif#ifndef _Included_ui_NdkActivity#define _Included_ui_NdkActivity#ifdef __cplusplusextern "C" {#endif/* * Class: ui_NdkActivity * Method: getStringFromNative * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_ui_NdkActivity_getStringFromNative (JNIEnv * env, jobject jObj){LOGE("log string from ndk.");return (*env)->NewStringUTF(env,"Hello From JNI2222!");}#ifdef __cplusplus}#endif#endif
- 加入NDK路径
在Android Studio工程目录下的local.properties文件中加入:ndk.dir=F:\NDK\android-ndk-r10d(本人用的是ndk-r10d) - 修改gradle配置文件
工程下边的自己的应用app 的bulid.gradle 以下的修改内容android{……}
productFlavors { x86 {versionCode Integer.parseInt("6" + defaultConfig.versionCode) ndk { abiFilter "x86"} } mips {versionCode Integer.parseInt("4" + defaultConfig.versionCode) ndk { abiFilter "mips"} } armv7 {versionCode Integer.parseInt("2" + defaultConfig.versionCode) ndk { abiFilter "armeabi-v7a"} } arm {versionCode Integer.parseInt("1" + defaultConfig.versionCode) ndk { abiFilters "armeabi", "armeabi-v7a"} }}
一般只用到arm平台
- 使用os包(可无此操作)
sourceSets.main{//让AS识别libs下的.so第三方包 jniLibs.srcDirs =['libs']}
defaultConfig{……..}添加
ndk {moduleName "JniTest"ldLibs "log", "z", "m"abiFilters "armeabi", "armeabi-v7a", "x86"}
dependencies{…….}添加(对应是否引入其他包)
compile fileTree(dir: 'libs', include: ['**.*'])
- rebuild工程
Android studio 2.1.2 gralde 注意 编译手机软件前首先把软件卸载掉,防止有些C文件修改后java 没有及时修改
1 0
- NDK入门调程序
- Android NDK入门程序HelloWorld
- Android NDK入门(实现简单的NDK程序)
- ndk编译c可执行程序(jni 入门)
- ndk编译c可执行程序(jni 入门)
- ndk编译c可执行程序(jni 入门)
- Android NDK的入门程序 FATAL EXCEPTION
- NDK入门
- NDK入门
- NDK 入门
- NDK入门
- NDK入门
- NDK入门
- NDK入门
- NDK入门(一) 在Android Studio中创建并运行第一个ndk程序hello world
- NDK入门:老码农谈NDK开发
- ndk-stack 调试NDK程序
- Android NDK 使用入门
- xmlns-1
- 获取当前页面控制器
- Django Rest framework学习(一)
- TesseractOCR 文字识别 自定义拍照界面(AVFoundation)
- SQL中用insert into插入一行或多行记录
- NDK入门调程序
- mysql tx_isolation
- 图片剪裁并上传
- fileinput 插件 删除按钮的回调操作
- 编码 解码 解码错误还原 “联通”
- Lucene学习总结之三:Lucene的索引文件格式(1)
- 大话设计模式-----装饰者模式
- 今年暑假不AC hdu 2037
- SQL语句创建表