使用eclipse 进行Android ndk开发(javah进行头文件生成)

android 程序基于java写之后,正式发布之后很容易被反编译,因此需要一种方式去对代码或者敏感数据进行保护(例如通讯密钥等),ndk是一种很好的解决方案。

ndk可以生成较难进行反编译的二进制库(.so)文件。

首先需要进行ndk的环境搭建,eclipse的搭建很简单,首先eclipse中增加android的插件,其需要下载一个ndk的包,然后在eclipse的设置中,Android项中的ndk的路劲进行设置:

如图:

 

随后就可以开始进行NDK的开发了,随后通过一个例子来进行ndk的开发。

首先,建立一个新的android工程,随后新建一个jar包,并编写准备用于C++开发的接口类。类的代码如下:

public class ndkHelloWorld {

  public static native String stringFromNDK();

}

然后找到对应的classes目录,使用javah命令生成对应的头文件,命令为:

javah -jni com.example.ndk.ndkHelloWorld

随后就能在classes目录下能够看到一个com_example_ndk_ndkHelloWorld.h,这个文件就是生成的头文件了。

然后我们要进行so库的添加,右键项目属性,在选中android tool,add native support,如下图:

点击之后,会让你输入so的名称,输入之后,就可以看到我们的项目列表多了一个jni文件夹,有关ndk的相关数据均在这个文件夹下,把我们之前通过javah生成的头文件放入该文件夹下。

Android.mk就是jni的编译文件,语法这边不再展开了。

在CPP中实现com_example_ndk_ndkHelloWorld.h中的方法,并引入之前生成的头文件:

#include "com_example_ndk_ndkHelloWorld.h"

jstring Java_com_example_ndk_ndkHelloWorld_stringFromNDK

  (JNIEnv *env, jclass obj){

  return env->NewStringUTF("Hello ndk");

}

然后回到我们之前的那个ndkHelloWorld,加上对so的链接。

static {

  System.loadLibrary("ndkHelloWorld");

}

然后我们就可以再其他文件中调用这个类的ndk方法了。

mTextView.setText(ndkHelloWorld.stringFromNDK());

 

代码位置:

http://download.csdn.net/download/highkgao1988/8982487

 

转载于:https://www.cnblogs.com/highkgao/p/4711981.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值