您的位置:首页 > 编程语言 > Java开发

eclipse上android ndk 配置及使用javah生成jni 的 .h的头文件

2013-10-19 22:06 330 查看
这是我第一次写博客,希望自己能够坚持下去。平时都是我看别人的技术博客来做东西,对照了很多有时候会发现,对于同一问题的解决可能存在很多的方法,在看了很多方法后可能会产生混淆,导致折腾了很久,浪费了很多宝贵的时间。另一方面,为了巩固我所学到的东西,写一篇博客可以记忆的更牢。1.androidndk配置:在这个网址上下载所需要的资源http://developer.android.com/tools/sdk/ndk/index.html#Installing然后解压资源包放到你能找到的地方在eclipse中点击window->preferences弹出一个对话框,左侧android->NDK,然后在右边浏览你解压后ndk包的根目录.
apply->ok之后ndk就配置完成了。2.创建含有本地方法的android工程File->new->project....这儿和其他的android工程的创建相同,再不多说。然后,加入本地方法支持右键你所见的工程点击androidtools,再点击addNativeSupport,再点击project菜单选择buildall就会看到下面的东西。这样我们就可以写C++的东西了。3.编写含有本地方法的java代码和本地方法的C++代码实现java代码
packagecom.example.nativeactivity; publicclassNativeHello{ static { System.loadLibrary("NativeActivity"); } publicstaticnativeStringjniNativeHello(); }packagecom.example.nativeactivity; importandroid.os.Bundle; importandroid.app.Activity; importandroid.view.Menu; importandroid.widget.TextView; publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextViewtv=(TextView)findViewById(R.id.tv1); tv.setText(NativeHello.jniNativeHello()); } @Override publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); returntrue; } }4.在eclipse中配置执行javah命令生成jni的.h文件。run菜单下点击Externaltools->Externaltoolsconfiguration会弹出一个对话框${system_path:javah}
${project_loc}
-verbose-jni-classpath"${project_loc}/bin/classes"-d"${project_loc}/jni"${java_type_name}
选择到有native方法的java类然后点击run,就会看到下面的结果:
[/code]
设置支持的平台:在jni目录下新建一个文件Application.mk,内容是:APP_ABI:=armeabiarmeabi-v7amipsx86表示支持所有的平台,编译运行之后会看到在各种平台上的.so文件
C++源代码:
//NativeActivity.cpp源文件
#include<jni.h>
#include"com_example_nativeactivity_NativeHello.h"
JNIEXPORTjstringJNICALLJava_com_example_nativeactivity_NativeHello_jniNativeHello
(JNIEnv*env,jclassjc){
jstringjs;
js=env->NewStringUTF("Helloworld");
returnjs;
}
右击NativeActivitiy->runas->androidapplicationprograme会看到以下结果:[/code]

本人QQ:1091665839希望可以帮到人。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: