使用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

时间: 2024-12-25 23:01:24

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

Android NDK开发指南---Application.mk文件和android.mk文件

https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https://android.googlesource.com/platform/ndk/+/4e159d95ebf23b5f72bb707b0cb1518ef96b3d03/docs/ANDROID-MK.TXT https://android.googlesource.com/platform/ndk/+/4

eclipse android ndk开发遇到的问题.

1. error:parameter name omitted 用javah生成的.h文件中,方法是没有指定形参的,实现的时候需要我们在实现的方法定义中加上形参. 2. 'NewStringUTF' could not be resolved 出现这个问题找了不少地方也没有解决办法,后来在problems view中把这个错误删除掉,就可以了.执行ndk-build编译通过. 3.   Unresolved inclusion: <jni.h> 刚开始写jni代码时include<jni

Android NDK:①开发环境的搭建(Windows下Eclipse无cygwin)

Android NDK:①开发环境的搭建(Windows下Eclipse无cygwin)                                   --转载请注明出处:coder-pig 一些概念性的东西: JNI:(Java Native Interface Java)本地开发的接口,通过他,Java调用外部的c/c++代码, 外部的c/c++代码可以调用Java代码! NDK:(Native Develop Kits)本地开发套件Google提供给我们的一个在Android上开发J

Android SDK+Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建

这几天一直在研究 Android SDK C/C++平台的搭建,尽管以前有成功在Windows XP做过,由于当时没有留下有用的记录,花了很多的冤枉时间,今天写出来以备后用.由于Android SDK和Eclipse都是用Java编写的,因此需要先在Windows 7上安装JDK,才能进行后续操作,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择相应的版本下载安装. 平台的搭建可以分为两大步: 一

Android NDK 开发(三)--常见错误锦集合Log的使用【转】

转载请注明出处:http://blog.csdn.net/allen315410/article/details/41826511  Android NDK开发经常因某些因素会出现一些意想不到的错误,很多时候调试这些错误的时候,显得比调试Java代码要复杂,一方面是导致错误的原因很多很杂,另一方面NDK开发涉及到C/C++代码的编写,很多程序员对此不熟悉.那么这篇博客就总结一下,在NDK开发中经常出现的一些问题,并且尝试提供一些正确的解决方案,方便在开发时能够快速定位到错误,更改错误,当然了,错

跟我学Android NDK开发(一)

Android NDK 开发跟其它开发一样,首先需要配置好开发环境,本文以 Ubuntu系统为例介绍如何进行 Android NDK 开发环境的配置. 1. 简介 什么是 Android NDK 呢? NDK(Native Development Kit) 是一个允许开发者用一些本地语言(C/C++)编写 Android App 的部分功能的工具集.对于一些特定的 App,NDK 非常有利于我们直接使用现成的用 C/C++ 编写的代码库(但对于大多数 App 来说,NDK 是没有必要的).使用

Android NDK开发(八)——应用监听自身卸载,弹出用户反馈调查

转载请注明出处:http://blog.csdn.net/allen315410/article/details/42521251 监听卸载情景和原理分析 1,情景分析 在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底.这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可

Android NDK开发(三)——常见错误集锦以及LOG使用

转载请注明出处:http://blog.csdn.net/allen315410/article/details/41826511  Android NDK开发经常因某些因素会出现一些意想不到的错误,很多时候调试这些错误的时候,显得比调试Java代码要复杂,一方面是导致错误的原因很多很杂,另一方面NDK开发涉及到C/C++代码的编写,很多程序员对此不熟悉.那么这篇博客就总结一下,在NDK开发中经常出现的一些问题,并且尝试提供一些正确的解决方案,方便在开发时能够快速定位到错误,更改错误,当然了,错

windows下用ADT进行android NDK开发的详细教程(从环境搭建、配置到编译全过程)

郑重申明:如需转载本博客,请注明出处,谢谢! 这几天在学习android NDK的开发,那么首先让我们来看看android NDK开发的本质是什么. NDK(Native Development Kit),即本地开发工具,简单地说,就是在开发android应用程序的时候,在java类中调用native函数,而native函数的接口也是在java类中定义的,但是native函数最终由本地的C/C++代码实现.简单地说,就是在java中调用C/C++函数.至于为什么要用NDK,我总结了一下,大致有以