Android JNI使用

首先为什么要用JNI呢?


因为Android平台的独特性,别人拿到apk后,可以进行反编译,可以看到你代码中的一些重要的内容,比如秘钥等.
虽然说可以通过混淆来做到代码不易读,但是字符串等常量是不能被混淆的.
知道JNI下生成的so文件被反编译,获取的难度就大了很多.决定把保密的东西放在底层中,然后通过JNI访问它.
下面说说如何使用JNI:

  1. 下载NDK,这个不知道的可以百度或者google查询下.
  2. 使用NDK,也即是编写C,C++的代码,需要AndroidStudio来支持
  3. 配置 ndk.dir
local.properties 添加如下配置:

     sdk.dir=/path/to/android-sdk

     ndk.dir=/path/to/android-ndk

4.AS中可以通过两种方式可以实现
5. 通过设置gradle.properties中设置android.useDeprecatedNdk=true,然后在App中的build.gradle中设置android{} ` ndk{
moduleName “NdkJniDemo” //生成的so名字
ldLibs “log”, “z”, “m” //添加依赖库文件,因为有log打印等
abiFilters “armeabi”, “armeabi-v7a”, “x86” //输出指定三种abi体系结构下的so库。目前可有可无。
}
具体参考:这里写链接内容
6. 可以通过官网指导即可
7,官网中遇到的问题
不可以定义多个JNI函数,原因是因为cpp文件定义的函数没有被extern “C”包含,这个折磨了我很久,作为记录留存.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值