Android Studio + NDK
来源:互联网 发布:软件和电子地图关系 编辑:程序博客网 时间:2024/05/29 17:45
- 准备工作
- 操作步骤
- 新建Android工程
- 申明native方法
- 新建jni文件夹
- 设置javah工具
- 新建C源文件
- 新建Androidmk文件
- 新建Applicationmk文件
- 设置ndk-build工具
- 生成so文件
- 修改gradle文件
- 运行结果
本文将介绍在Android Studio中使用NDK的一种简便的方法,先给出一些参考:
- 官方文档
- Android NDK and OpenCV Development With Android Studio
由于对Gradle的不熟悉,不想对build.gradle文件做过多的修改。那么可以通过先使用NDK编译so文件,然后再将so文件引入Android工程的步骤来配置Android Studio。
准备工作
-Android Studio
-Android sdk
-Android ndk
Android Studio使用的是稳定的1.4版本;ndk使用的是r10d版本。
操作步骤
1. 新建Android工程。
2. 申明native方法:
protected void onCreate(Bundle savedInstanceState) { ... ... TextView textView = (TextView) findViewById(R.id.textview); textView.setText(stringFromJNI()); ... ...}private native static String stringFromJNI();static { System.loadLibrary("hello");}
3. 新建jni文件夹:
4. 设置javah工具:
右键要生成头文件的java类文件,然后选择NDK Tools -> javah,这样在jni文件夹下就生成了相应的头文件。
5. 新建C源文件
#include "jonesx_ndkexample_MainActivity.h"JNIEXPORT jstring JNICALL Java_jonesx_ndkexample_MainActivity_stringFromJNI(JNIEnv * env, jclass clazz){ return (*env)->NewStringUTF(env, "Hello from JNI!");}
6. 新建Android.mk文件:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := main.cLOCAL_LDLIBS += -llogLOCAL_MODULE := helloinclude $(BUILD_SHARED_LIBRARY)
7. 新建Application.mk文件:
APP_ABI := armeabiAPP_PLATFORM := android-16
8. 设置ndk-build工具:
和设置javah的步骤相同。
Parameters:
NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1
9. 生成so文件:
右键jni文件夹,选择NDK Tool -> ndk-build;这样会自动生成jniLibs目录,目录下有相应平台的so文件。
10. 修改gradle文件:
到现在还不能运行程序,因为会报错:
Error:Execution failed for task ':app:compileDebugNdk'.> Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
还需要修改app\build.gradle文件,仅仅是添加一句:
android { ... ... // add sourceSets.main.jni.srcDirs = [] ... ...}
运行结果
通过以上步骤后的运行结果如下:
3 0
- android studio + NDK
- NDK With Android Studio
- Android studio NDK开发
- NDK With Android Studio
- windows+Android studio+ndk
- Android Studio NDK 编译
- android studio ndk
- Android Studio开发NDK
- Android Studio + NDK
- Android Studio ndk开发
- android studio 配置 NDK
- Android studio开发NDK
- Android Studio NDK配置
- Android Studio NDK编译.
- android studio NDK编程
- android studio 使用NDK
- Android Studio NDK使用
- Android Studio 与 NDK
- iOS 清理缓存方法
- 逻辑回归模型及LBFGS的Sherman Morrison(SM) 公式推导
- Trending repositories(iOS的趋势存储库)
- Java如何连接SQLserver 2008数据库
- 第四周 项目5 猴子选大王
- Android Studio + NDK
- 贪心算法实现过程
- C++中复制构造函数和重载赋值操作符总结
- 第四周项目4--建立双链表算法库
- 第4周 项目2 建设“单链表”的算法库
- linux内核源文件介绍以及头文件的位置
- C++开发调试笔记---避免低级错误
- 数据结构【线性表(二)链表】项目之循环双链表应用
- [深入理解Java虚拟机]第三章 HotSpot的垃圾收集算法实现