Android Studio建立jni开发环境
Android Studio建立jni开发环境
jasmine8gu 发表于3年前
Android Studio建立jni开发环境
  • 发表于 3年前
  • 阅读 12103
  • 收藏 158
  • 点赞 10
  • 评论 12

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: Android Studio建立jni开发环境

声明: 文章参考自 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种架构吧。

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














共有 人打赏支持
粉丝 12
博文 2
码字总数 801
作品 2
评论 (12)
闫志文
……ndk配置这种帖子见太多,还拿出来发……
jasmine8gu

引用来自“闫志文”的评论

……ndk配置这种帖子见太多,还拿出来发……

多谢评论, 千里之行始于足下嘛,慢慢的就深入了.
iman123
恩,确实还是挺有用的,我也在网上搜了一下,还有一个视频讲的更加深入一些(有朋友需要了解的可以去看一下)
https://software.intel.com/en-us/videos/using-the-ndk-with-android-studio

希望Android Studio的android的插件可以做的更加智能一点,省去输入那长长的命令,提高工作效率。
pkxutao
请问都用JNI来实现哪些功能呢? 做了两年安卓还不会JNI
回去干活
估计JNI就用在一些跨平台的开发上会需要.
iMeteOra
游戏开发需要JNI
imknown

引用来自“iMeteOra”的评论

游戏开发需要JNI
不对, 安卓 SDK已经完全可以满足一些游戏的需求和体验. SurfaceView, OpenGL ES, 自定义View, Animation, NineOldAndroid 等等.
斗大的熊猫
NDSM

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

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

恰恰相反,jni用在与平台密切相关的本地系统调用或实现高效率的算法
栗子酱
添加Application.mk 和 Android.mk文件?
在哪里添加?哪个目录下?为什么网上说好多都不用添加,好晕
都来科技
怎么配置c的头文件路径
都来科技
android.mk并没有作用
×
jasmine8gu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: