码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-08-09 23:58:25      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

标签:

原文地址:http://www.cnblogs.com/highkgao/p/4711981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!