Android Studio 配置NDK环境

Android开发中可以使用java+c的方式,使用c/c++开发在有的方面会提高效率和安全性。原来就简单的用过jni开发,但是现在好久不用都忘得差不多了,现在从配置环境开始,一步一步记录下来,算是巩固,而且以后自己写的程序会刻意的多使用。

第一步:配置NDK路径

下载好NDK并安装,在下载SDK时可以选择下载NDK,这样在下载SDK时就下载好了NDK;打开设置界面,设置NDK路径,见图1:

image图1.设置ndk路径

第二步:配置gradle.properties

在该文件中添加过时ndk版本支持:android.useDeprecatedNdk=true

第三步:配置module的build.gradle
    /*NDK配置*/
    ndk{
        moduleName "encryptLib"
        abiFilters "armeabi", "armeabi-v7a", "x86"
    }
第四步:创建java类声明本地代码库,然后定义native方法
    /*声明本地代码库*/
    static {
        System.loadLibrary("encryptLib");
    }
    /*声明本地方法,获得加密后字符串*/
    public native String getEncryptString();
第五步:生成.h头文件,你可以自己写头文件,只不过繁琐而且容易出错。(最后会给出定制宏命令的方法)

(1)很多博客里面生成的.h文件位置都不对,还需要复制粘贴,其实可以通过命令一步到位的。

(2)打开Terminal窗口,cd到app/src/main/java目录;

(3)执行命令:

javah -encoding UTF-8 -d ../jni -jni 包名+类路径

-encoding UTF-8: 指定编码格式,否则有可能报编码不对应的错误,-d ../jni :是在上一级目录创建jni文件夹,而且让生成的头文件放在这个文件夹里面,-jni 包名+类路径:生成.h头文件。
这里写图片描述
image

第六步:编写c++文件
#include "com_wangliang160616_androidtest_activity_EncryptActivity.h"
JNIEXPORT jstring JNICALL Java_com_wangliang160616_androidtest_activity_EncryptActivity_getEncryptString1
  (JNIEnv *env, jobject obj){
  return env->NewStringUTF("Hello,JNI!");
  }
第七步:最后,调用
    /*handle business*/
    public void handleBusiness() {
        encryptTv.setText(getEncryptString1());
    }

在make project后,在build/intermediate/jniLibs下生成了so文件,将jniLibs文件夹拷贝到main目录下,删除刚刚创建的.h文件,.cpp文件。

最后,我们发现第五步生成.h头文件太麻烦了,容易出错,所以我们可以通过宏命令的方法来替代。

(1)设置→External Tools
这里写图片描述
image
(2)参数解释
第一个:Program,相当于命令javah,所以这里填写javah.exe的路径,我的路径是:

$JDKPath$\bin\javah.exe

第二个:Parameters:

-encoding UTF-8 -d $ModuleFileDir$\src\main\jni -jni $FileClass$

第三个:Working directory:

$ModuleFileDir$\src\main\java

这一个相当于指定目录:
D:\ASworkspace\AndroidTest2\app\src\main\java>

上面三个加起来就是:

D:\ASworkspace\AndroidTest2\app\src\main\java>
javah -encoding UTF-8 -d D:\ASworkspace\AndroidTest2\app\src\main\jni -jni com.wangliang160616.androidtest.activity.EncryptActivity

看看效果:
这里写图片描述
image

好了,大功告成!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值