分享

ndk开发流程

 Dragon_chen 2016-10-18
第一种方式按NDK集成方式配置ndk开发环境(已过时)。
配置jndk开发环境在Project视图下看,而不是默认的Android视图下看。
首先介绍第一种方式,
第一步编写本地函数native(建议专门用一个类,不要用继承appcompatActivity,要设置环境变量什么的麻烦死了)
第二步make Project目的是生成.class文件。利用这个class文件生成.h文件。依据这个,h文件来写c文件。.h文件与c文件位于同一个目录jni下(会帮你自动生成该目录).第二步是否成功就看有没有classes文件夹。(classe 在app/build/intermediates里)
第三步生成.h文件,打开cmd,首先cd到工程的src/main目录下。javah -d jni -classpath classes文件夹所在路径/debug 含本地方法的类的带包名全称(不需要带.class)运行上述命令,就能看到src/main/jni/下出现.h文件了。然后根据.h文件写c文件。
第四步 写c文件。把.h文件里的函数声明复制过来,注意参数没有声明变量,只是定义类型。如何根据c与java数据类型转换写函数体就不在这里讲了。
第五步配置Ndk路径 在local.properties文件中加上ndk.dir=你的ndk所在目录 我的就是D\:\\ndroid-ndk-r10b  在src文件下的bulid.gradle文件下defaultConfigure下添加ndk模块
ndk {
moduleName "checkapp-jni" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。
}
第六步设置gradle.properties文件中android.useDeprecatedNdk=true,
因为这种方式已经过时了。还有bug,要在jni文件夹下再生成一个空的c文件夹(按这种方式来的话才不会报错)。
so文件是动态链接库。在使用本地函数的类中要加载这个库所以在其静态代码块中加载该库,库的名字就是上面defaultConfigure定义的so名字。
static{
System.loadLibrary("checkapp-jni"); //so文件的名字
}
运行通过。但是本地函数名报红,没有关系。生成的so文件在\app\build\intermediates\ndk\debug\lib目录下。
javah每次运行手打太麻烦。使用externaltoos的自定义工具
设置以下属性
Program: $JDKPath$\bin\javah.exe 
Parameters: -classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$
Working directory: $ModuleFileDir$\src\main\Java 
第二种方式看转载过来的其他文章使用android studio1.3进行ndk开发。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多