android studio NDK 配置及入门案例
来源:互联网 发布:国家药品食品数据查询 编辑:程序博客网 时间:2024/06/04 19:35
据说android studio 的NDK现在开发已经很方便了,现在来尝试一波。
首先介绍一下我的android studio 环境 android studio 1.5
首先需要配置一下NDK开发环境:
1,下载android-ndk-r10,并解压 32位windows下载地址 64位windows下载地址
2,点击project structure--->选择SDK Location --->选择解压后的android-ndk-r10路径--->点击OK(这一步相当于配置了local.properties ,会在这个文件夹添加你ndk的路径)
3,一般ndk都不会是单独的一个工程,一般都会是工程中的一个module ,而且一般这个module 都是当做library来用。
因此下面新建一个module设置为library,名字为Test,生成module之后,就build一下module;
4,然后在module里面的build.gradle里面加上声明ndk模块的语句,即
ndk{ moduleName "test" }
build.gradle文件里的android{}块儿,添加了上述语句后整体效果为:
android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk{ moduleName "test" }
} buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}
5,然后在Test的包com.example.dfy.test下编写一个文件HelloJNI.class,如图
HelloJNI.class的内容为
package com.example.dfy.test;/** * Created by Administrator on 2016/7/20. */public class HelloJNI { static { System.loadLibrary("test"); //这里的名字要和build.gradle文件里的ndk名字保持一致 } public static native String getHello();//这个方法就是要通过jni调用实现}
然后build 一下这个module;
如果有提示诸如JNI 是实验版本,被忽略等的错误时,错误提示一般会提示让在工程的load.properties文件里加上这句
android.useDeprecatedNdk=true
,如果你public static native getStringFromC();这一句一直出现cannot solve corresponing jni function 的提示,(其实你不需要处理这个提示就行)
(如果你不想让提示,就请点击project structure ------>选择plugins———>这时如果你的android support ndk后面的对勾是选中的,请去掉对勾,点击确定,就能解决上面的错误提示。)
6,好了,现在如果没有其他错误就可以生成头文件(.h)了
在Android Studio 的Terminal 终端输入
cd test\src\main其实就是进入test\src\main路径下,(这里Test是library module 的名字)
然后执行
javah -d jni -classpath ..\..\build\intermediates\classes\debug com.example.dfy.test.HelloJNI
这句命令会在当前module下生成jni文件夹(-d ),并在jni文件夹下生成一个com_example_dfy_test_HelloJNI.h的头文件
具体如下:
com_example_dfy_test_HelloJNI.h的头文件内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_dfy_test_HelloJNI */#ifndef _Included_com_example_dfy_test_HelloJNI#define _Included_com_example_dfy_test_HelloJNI#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_dfy_test_HelloJNI * Method: getHello * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_dfy_test_HelloJNI_getHello (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
内容为:
#include "com_example_dfy_test_HelloJNI.h"JNIEXPORT jstring JNICALL Java_com_example_dfy_test_HelloJNI_getHello (JNIEnv *env, jclass jclass){ return (*env)->NewStringUTF(env,"Hello JNI !");}8,好了,按道理说.h和.c文件都有了,只要build一下module 就能生成.so文件了,
可是由于Android ndk平台还存在bug,至少我用的Android studio 1.5 版本有bug,会报错。
这里只需要在jni文件夹下再创建一个空的.c文件即可,名字可以随意命名,但不要重复,这里我命名为helio2.c。
然后在build 一下,然后如果没有出错,那么你就会看到test\build\intermediates会多出一个ndk文件夹,在ndk\debug\lib下生成了各个平台的.so文件,如图
最后看一下module test的整体文件布局:
- android studio NDK 配置及入门案例
- Android Studio NDK配置及使用
- android studio 编译so文件入门(ndk配置及demo)1
- android studio 编译so文件入门(ndk配置及demo)2
- Android-NDK入门案例及基础问题解决(一)
- android studio 配置 NDK
- Android Studio NDK配置
- android studio ndk配置
- Android Studio 配置NDK
- Android Studio 配置NDK
- Android Studio配置NDK
- android studio NDK配置
- Android NDK入门开发案例
- Android的NDK入门配置(Android Studio环境)
- Android NDK开发基础——配置及简单案例
- Android Studio NDK开发入门
- Android Studio NDK入门学习
- Android Studio NDK开发入门
- JDBC
- TreeView(竖节点控件)《笔记4》
- C语言指针的函数运用和数组
- POJ1276 Cash Machine 【解法一】
- ajax、xml、json
- android studio NDK 配置及入门案例
- 处理浏览器的兼容问题之nextSibling
- Leetcode题解 142. Linked List Cycle II
- git修改启动目录和改变项目位置
- hdu5723 最小生成树+DFS(距离和,期望)
- python核心编程学习笔记-2016-07-19-03-局部变量代替模块变量
- MySQL读书笔记-MVCC多版本并发控制
- 游戏编程中的人工智能技术-神经网络入门(四)
- mysql调优