软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 移动开发 -> 文章标题 -> 正文阅读
移动开发 最新文章
深入了解android中的消息机制Handler
Android
Libgdx之BitmapFont字体
AndroidApp发布到应用市场的流程
Android开发找工作之前先看看这些知识点吧
View的事件分发机制解析
简单介绍了解白鹭引擎Egret
Cocos2d
android获取本地图片(二)
动画特效七:碰撞动画

[移动开发]文章标题

  2016-04-03 20:41:32

Android Studio 1.5.1 JNI 编程


1. 新建project MyJNI,使用默认设置即可。
2. 新建Test类:右键com.example.myjni新建java类

3. 在Test类中编写如下代码,loadLibrary(“test”)中“test”库为NDK库名,之后将会定义。myFun()即为我们自定义的c++函数。
public class Test {
    static {
        System.loadLibrary("test");
    }
    native String myFun();
}

4. 生成Test类所对应的头文件:打开AS Terminal,切换到$工作目录$\MyJNI\app\src\main\java目录下,键入命令:javah -jni -cp ;, com.example.myjni.Test生成头文件(注意-cp之后是 空格+分号+逗号),经过尝试直接使用“javah -jni com.example.myjni.Test”命令会出现“ Could not find class file for ‘com.example.myjni.Test’.”的错误。此时在java\目录下就可以看到生成的.h文件了。

生成的.h内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_myjni_Test */

#ifndef _Included_com_example_myjni_Test
#define _Included_com_example_myjni_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_myjni_Test
 * Method:    myFun
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_myjni_Test_myFun
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

5. 新建jni文件夹:在main目录上右键,new->folder->jni floder

6. 将步骤4中生成的头文件剪切到jni文件夹中,并且新建C++ source file “test.cpp”,编辑代码如下:
#include "com_example_myjni_Test.h"

JNIEXPORT jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj) {
    return env->NewStringUTF("hello, this is myFun output!");
}

jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj);

在编辑完头文件之后,可以build一下,这样便会提示相关变量类型及函数。至此代码部分就搞定了~
7. 配置AS NDK环境:打开AS SDK manager在sdk tools中选择Android NDK点击安装。


8.左键file,选择project structure。进入sdk location,看到如下界面,选择OK。此时NDK及SDK的目录将会出现在local.properties中。


local.properties中代码如下所示:
ndk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk\\ndk-bundle
sdk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk

9.向gradle.properties中加入android.useDeprecatedNdk=true
10.向app目录下build.gradle文件中设置库文件名(生成的so文件名),其moduleName “test”就是第3步中System.loadLibrary(“test”);中所填的库名。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.myjni"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        //添加部分
        ndk{
            moduleName "test"
        }
        //添加部分结束
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

11.至此我们第一个jni程序所需的所有步骤已经完成,点击运行,查看结果。



参考博文:
NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序: http://yanbober.github.io/2015/02/14/android_studio_jni_1/
2. Android问题集锦转载之三:Javah 常见错误记录-NDK与JNI除错:http://blog.csdn.net/lincyang/article/details/6528477
3. http://developer.android.com/ndk/samples/sample_hellojni.html
4. https://segmentfault.com/a/1190000003999352
上一篇文章      下一篇文章      查看所有文章
2016-04-03 20:41:06  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-4-30 15:08:05
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --