Android Jni的简单使用详解
作者:人言落日是天涯 发布时间:2023-10-20 14:37:43
标签:Android,Jni
需求介绍
相信大家在请求接口的时候,很多时候都是需要传参的,除了业务必要的字段外,还有一些恒定不变的字段,包括一些用来编码的固定字段。这些固定字段的值我们是不能直接写在项目工程中的。防止被别人反编译,抓包获取后,恶意请求,抓取我们的用户数据。
老规矩,先上图:
解决方法
这时候我们就可以利用Jni(Java Native Interface)来存储我们这些常量值,虽然也不是最安全的方式,但是也增加了反编译和抓包的难度。相对来说还是安全一点的。
具体做法就是:
① 新建一个工程,包名和你需要调用Jni的工程一样
② 在/src/main/路径下面新建一个jni目录,顺便新建一个c文件
③ 在c文件中写入相关代码
这里针对第三步,该如何存储重要字段值,具体代码如下:
#include <jni.h>
//格式为:Java_包名_类名_函数名(方法名)(调用jni的类的包名)
JNIEXPORT jstring JNICALL
Java_com_anxindeli_anxincow_tools_JniTool_strFromJni(JNIEnv *env, jclass type) {
return (*env)->NewStringUTF(env, "anxindeli_cow_ysdss_30ccoaea04e");
}
调用该so库的java类目录必须是
否则会调用不成功的。
JniTool代码:
public class JniTool {
static {
System.loadLibrary("str-jni");
}
public static native String strFromJni();
}
最后在Java中调用
JniTool.strFromJni()
就这样简单的一句就可以了。。。
来源:https://www.jianshu.com/p/601cd0fe3a2d


猜你喜欢
- 1.添加依赖直接添加 hibernate-validator<dependency> &n
- 使用resilience4j的库和Spring Boot设计高弹性的微服务。微服务本质上是分布式的。当您使用分布式系统时,请始终记住这一第一
- 1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有Su
- IDEA快速创建getter和setter方法找到generate我的是Mac,右击鼠标就可以打开,相信windows也不难。选择gette
- DataTable.Select()根据条件筛选数据很多时候我们获取到一个表的时候需要根据表的包含的队列去筛选内容,一般来说可能想到的就是遍
- MyBatis Example And与Or混合使用(条件1 and 条件2) or ( 条件3 and 条件4)
- 这篇文章主要介绍了java内存泄漏与内存溢出关系解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- AsyncTask什么是AsyncTaskAsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和结果传
- XML假如有这样一个XML格式的数据:<?xml version="1.0" encoding="utf
- 如下所示:1 需要在project structure中的Artifacts下的项目classes文件夹下添加Directory Conte
- 如果我们做一个小型的web站,而且刚好选择的kotlin 和Spring Boot技术栈,那么上传文件的必不可少了,当然,如果你做一个中大型
- 配置文件形式pom.xml<?xml version="1.0" encoding="UTF-8&quo
- 一、前言本文主要是从官方文档中筛选出一些常见的适配项,若有任何纰漏或需要补充的,欢迎大家在评论区指出。二、版本适配1. 限制 HTTP 网络
- 目录前言一、介绍一下GradientDrawable二、实现三、源码:总结前言今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行
- 本文实例为大家分享了Android调用外置摄像头的具体代码,供大家参考,具体内容如下1、布局文件<?xml version="
- 场景:假设每次我们去超市购物,我们都会推一个购物车,有水果、蔬菜、肉类三种商品,提供给我们选择,那么这时候,如果使用装饰器模式,应该如何实现
- 前言什么是mybatis二级缓存?二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace。即,在不同的s
- 一.模拟问题最近在公司遇到一个问题,挂号系统是做的集群,比如启动了两个相同的服务,病人挂号的时候可能会出现同号的情况,比如两个病人挂出来的号
- 1. 算法分析根据概率将奖品划分区间,每个区间代表一个奖品,然后抽取 随机数,反查落在那个区间上,即为所抽取的奖品。2. 代码核心
- 一、队列简介队列是一个有序列表,遵循“先入先出”的原则,即先存入队列的数据要先取出,后存入的数据后取出。队列有两种存储表示,顺序表示和链式表