文档章节

Android Studio建立jni开发环境

jasmine8gu
 jasmine8gu
发布于 2015/03/06 23:55
字数 512
阅读 12343
收藏 158

声明: 文章参考自 csdn sodino 的博客

Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处。

Step: 2.执行Build->Make Project
生成了.class文件..class文件的生成路径是在 app_path/build/intermediates/classes/debug下的. 这个在android studio里面看不到, 到文件管理器里面翻到的, 里面还有好多东西。

Step: 3.javah生成c头文件
点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件。

这 里需要注意的是要进入 <Project>\app\src\main的目录下执行javah命令,为的是生成的 .h 文件同样是在<Project>\app\src\main路径下(jni下面),可以在Studio的工程结构中直接看到。


操作命令:

javah -d jni -classpath <SDK_android.jar>;<APP_classes> <class>
 

javah -d jni -classpath c:\Users\Ximei\AppData\Local\Android\sdk1\platforms\android-21\android.jar;..\..\build\intermediates\classes\debug com.example.jnitest
好长一串,  好家伙,  这通敲.

然后就看到<project>\app\src\main\jni\com_example_jnitest.h出现了.

Step: 4.编辑c文件

在<project>\app\src\main\jni\jnitest.c文件中实现头文件中的函数。
 

Step: 5.配置NDK

这一步包括两个动作:
 

1.指明ndk路径
在local.properties中添加ndk目录, ndk目录中不可包含空格.
ndk.dir=C\:\\android-ndk-r10d


2. 修改build.gradle配置

工程中共有两个build.gradle配置文件,我们要修改的是在<Project>\app\build.gradle这个文件。为其在defaultConfig分支中增加上
    ndk {
        moduleName "jnitest"

    }

3.  添加Application.mk  和 Android.mk文件

Application.mk
APP_PROJECT_PATH := $(call my-dir)/project
APP_MODULES      := nativebt
 

Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := jnitest
LOCAL_SRC_FILES :=  jnitest.c

LOCAL_DEFAULT_CPP_EXTENSION := cpp

#include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)

然后进行编译,  会出现no rule to make target....错误,  按照网上的经验,  生成一个空的empty.c文件,  错误通过. (啧, 2014年3月的bug,  居然还没有fix版)
终于编译成功, 编译出来的库文件在如下路径:

<project>\app\build\intermediates\ndk\debug\lib\  共7个目录, 7种架构吧。

至此, 开发环境建立成功。














© 著作权归作者所有

共有 人打赏支持
jasmine8gu
粉丝 11
博文 2
码字总数 801
作品 2
其他
私信 提问
加载中

评论(12)

都来科技
都来科技
android.mk并没有作用
都来科技
都来科技
怎么配置c的头文件路径
栗子酱
栗子酱
添加Application.mk 和 Android.mk文件?
在哪里添加?哪个目录下?为什么网上说好多都不用添加,好晕
NDSM
NDSM

引用来自“回去干活”的评论

估计JNI就用在一些跨平台的开发上会需要.

恰恰相反,jni用在与平台密切相关的本地系统调用或实现高效率的算法
imknown
imknown

引用来自“iMeteOra”的评论

游戏开发需要JNI
不对, 安卓 SDK已经完全可以满足一些游戏的需求和体验. SurfaceView, OpenGL ES, 自定义View, Animation, NineOldAndroid 等等.
iMeteOra
iMeteOra
游戏开发需要JNI
回去干活
回去干活
估计JNI就用在一些跨平台的开发上会需要.
pkxutao
pkxutao
请问都用JNI来实现哪些功能呢? 做了两年安卓还不会JNI
i
iman123
恩,确实还是挺有用的,我也在网上搜了一下,还有一个视频讲的更加深入一些(有朋友需要了解的可以去看一下)
https://software.intel.com/en-us/videos/using-the-ndk-with-android-studio

希望Android Studio的android的插件可以做的更加智能一点,省去输入那长长的命令,提高工作效率。
Android Studio建立jni开发环境

@jasmine8gu 你好,想跟你请教个问题: 您好,您之前的 http://my.oschina.net/u/2320407/blog/383680 Android Studio建立jni开发环境 中的3. 添加Application.mk 和 Android.mk文件 是怎么添...

栗子酱
2016/04/09
114
0
Intel® INDE for Google Android Studio

Intel 开发者社区提供工具,并且为跨平台应用程序开发,以及平台、技术信息、代码示例和同行工作人员提供指南信息,以此来帮助开发人员创新与成功。为 Android,物联网,Intel® RealSense™...

oschina
2015/04/08
5.4K
8
Android Studio之NDK环境搭建,so文件打包以及使用

本篇入门教程开发环境为mac + Android Studio + gradle 2.14.1,主要包含以下3块内容: NDK环境搭建 编写第一个JNI项目 打包出动态so文件,在其他项目中使用 一、NDK环境搭建 从Android Stu...

ljianbing
2018/06/26
0
0
Android Studio 1.0 正式版发布!

Android Studio 1.0 正式版发布! Android Studio 1.0 终于发布啦,作为一个 Android 团队官方的集成开发环境(IDE),建立在当下非常流行的 IntelliJ IDEA(社区版)Java IDE 的基础上。 去...

oschina
2014/12/09
18.8K
92
[Android] 环境配置之Android Studio开发NDK

======================================================== 作者:qiujuer 博客:my.oschina.net/u/1377710 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://my.osc......

Qiujuer
2014/12/21
0
8

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部