Android JNI调用c语言加密程序

这篇博客介绍了如何在Android中利用NDK和JNI调用C语言实现加密程序,详细讲解了从环境配置到生成.so文件的整个流程,包括配置NDK环境、修改gradle文件、添加native方法、使用javah生成头文件、创建jni目录及.mk文件,最后展示了编译和运行结果。

在这篇博客中,我将利用NDK调用JNI来使用本地c语言实现的一个简单的加密程序,主要是为了熟悉NDK和JNI的使用方法,希望可以让后来人少踩一些坑。

系统环境

Android Studio 2.3.3
jdk1.8.0
android-ndk-r14b-windows-x86_64

配置NDK环境

下载NDK和配置环境变量在此不做赘述,不会的可以自行百度
在Android Studio中File–>ProjectStructure–>SDK Location配置“Android NDK Location”如下图:

配置gradle.properties和build.gradle文件

在项目目录下gradle.properties文件中加入

android.useDeprecatedNdk=true

修改app–>build.gradle,添加以下内容:
在defaultConfig中添加ndk项,这里moduleName是将来生成.so文件的名字,abiFilters是生成指定平台的so文件,如果不写abiFilters会生成所有平台的so文件

ndk {
    moduleName "Crypto"
    abiFilters "armeabi"
}

在buildTypes中添加sourceSets项,配置so文件存放位置

sourceSets {
    main {
        jni.srcDirs = ['libs']
    }
}

添加native方法
public class Crypto {
   
   

    static {
        System.loadLibrary("Crypto");
    }

    public native String encrypt(String prim);
    public native String decrypt(String code);

}

这里我们添加两个方法供以后使用,注意这里loadLibrary要和build.gradle中moduleName一致

使用javah生成对应.h头文件

在Android Studio下方Terminal进入java路径(直接将文件夹拖到命令行就进入该目录了),如果没有Terminal,从View–>Tool Windows–>Terminal打开即可。
输入命令javah -jni 包名.类名

javah -jni com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值