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()
就这样简单的一句就可以了。。。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Android JNI处理图片实现黑白滤镜的方法
前言 在Android的开发中,我们有时会遇到对性能要求比较高的模块.所幸Android通过NDK为我们提供了c++开发的方式.我们可以通过c++完成核心的耗时的计算,然后通过JNI的方式将处理完成的数据传给Java层. 今天,我们就从一个很小的角度(Bitmap)的处理,来实践NDK开发的方式.开发一个小小的图片滤镜. 准备 新版本的Android Studio在新建工程时,就可以选择Include C++ support 当我们勾上这个选择后,Android Studio就会帮我们自动完成,
-
Android通过JNI实现守护进程
开发一个需要常住后台的App其实是一件非常头疼的事情,不仅要应对国内各大厂商的ROM,还需要应对各类的安全管家...虽然不断的研究各式各样的方法,但是效果并不好,比如任务管理器把App干掉,服务就起不来了... 网上搜寻一番后,主要的方法有以下几种方法,但都是治标不治本: 1.提高Service的优先级:这个,也只能说在系统内存不足需要回收资源的时候,优先级较高,不容易被回收,然并卵... 2.提高Service所在进程的优先级:效果不是很明显 3.在onDestroy方法里重启service:
-
详解AndroidStudio JNI +Gradle3.0以上JNI爬坑之旅
1.首先什么是JNI呢? JNI--(Java Native Interface),他是java平台的特性,不是安卓系统提供的.他定义了一些JNI函数,来让开发者可以通过调用这些函数来实现java代码调用C/C++代码. 2.如何使用JNI呢? 我们先将写好的C/C++代码编译成对应平台的动态库(windows是.dll文件,linux是.so文件). 下面我们来举个栗子:使用AndroidStudio来实现JNI 3.要实现JNI先下载NDK,那么NDK又是什么呢?(面试宝典来了,赶紧掏出小本
-
Android使用Jni实现压力锅数据检测效果示例
本文实例讲述了Android使用Jni实现压力锅数据检测效果.分享给大家供大家参考,具体如下: 1.创建主页: package com.android.imooc.jni; import com.android.imooc.R; import android.app.Activity; import android.os.Bundle; import android.view.View; /** * @描述 模仿压力锅检测数据 * @项目名称 App_imooc * @包名 com.androi
-
浅谈Android Studio JNI生成so库
1.新建Android studio工程 2.新建class:AppKey.java.主要为了保存密钥 代码块 package com...adminapp.lib.utils.jni; /** * Created by seven on 16/9/8. */ public class AppKey { static { System.loadLibrary("AppKey"); } public static native String WechatId(); public stat
-
从源码编译Android系统的Java类库和JNI动态库的方法
利用源码编译Android系统Java类库 1.编写Java项目和Android.mk文件 ├── Android.mk └── src └── com └── lhw └── framework └── led └── Led.java Led.java文件 package com.lhw.framework.led; /** * LED操作库 * @author Micky Liu */ public class Led { public boolean turnOn() { return
-
Android串口开发之使用JNI实现ANDROID和串口通信详解
一:串口通信简介 前段时间因为工作需要研究了一下android的串口通信,网上有很多讲串口通信的文章,我在做的时候也参考了很多文章,现在就将我学习过程中的一些心得分享给大家,由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以及第一个jni调用程序 ,串口通信和java操作io类似,先打开串口,然后向串口发送或者读取数据,最后关闭串口,所以基本思路就是: 1.对串口文
-
android串口开发入门之搭建ndk开发环境及第一个jni调用程序
前言 这几天专门研究了下JNI编程,在网上找了好多资料,不过好多都是以前的,没有更新,而且有的还是错误的,让人不得不吐槽一把.所以觉得自己来一篇,本文将详细介绍关于android搭建ndk开发环境及第一个jni调用程序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一:ndk环境搭建 1:开发环境 我使用的是android studio 2.3.3版本,搭建ndk开发环境比较简单,打开File----Settings----Appearance&Behavior--
-
Android在JNI中使用ByteBuffer的方法
本文实例讲述了Android在JNI中使用ByteBuffer的方法.分享给大家供大家参考.具体如下: 一.ByteBuffer 定义 在NIO中,数据的读写操作始终是与缓冲区相关联的(读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区) 缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer. ByteBuffer有以下几
-
详解Android JNI的基本使用(CMake)
简介 什么是JNI JNI的全称是Java Native Interface:Java本地开发接口,它提供了若干的API实现了Java和其他语言的通信(主要是C和C++),目的就是Java可以调用C或C++开发的函数,C或C++也能调用Java的方法.这样有很多有点,其一就是效率,C/C++是本地语言,比java更高效:其二就是可以复用已经存在的C/C++代码:其三是Java反编译比C语言容易,一般加密算法都是用C语言编写,不容易被反编译. 什么是NDK和CMake NDK全称是Native D
随机推荐
- Python3利用SMTP协议发送E-mail电子邮件的方法
- JavaScript中Textarea滚动条不能拖动的解决方法
- Struts2访问servlet分享
- php XPath对XML文件查找及修改实现代码
- SQLite教程(二):C/C++接口简介
- javaScript 简单验证代码(用户名,密码,邮箱)
- JavaScript去掉空格的方法集合
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- php+mysql实现用户注册登陆的方法
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- javascript中window.open在原来的窗口中打开新的窗口(不同名)
- js自定义弹框插件的封装
- Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)
- 第十五节--Zend引擎的发展
- Webview实现android简单的浏览器实例代码
- 基于vue中css预加载使用sass的配置方式详解
- 数据库语言分类DDL、DCL、DML详解
- java生成指定范围的随机日期
- Flutter利用注解生成可自定义的路由的实现
- C#如何给枚举类型增加一个描述特性详解