Eclipse下NDK开发(java调用so文件)
2014-09-03 17:03
337 查看
eclipse下两种配置方式:
一种是右键工程选择properties->builders->new->program,然后再做相应的选择,因为这种方式我没有尝试过,网上也有例子,所以我就不做详细的说明。
另一种方式:先加载ndk路径:
![](http://m.blog.csdn.net/blog/wade333777/16847783)
![](http://img.blog.csdn.net/20131121113507546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FkZTMzMzc3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
选择标题栏的Eclipse->Preferences->
![](http://m.blog.csdn.net/blog/wade333777/16847783)
![](http://img.blog.csdn.net/20131121113615562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FkZTMzMzc3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后选择NDK的路径即可。
接下来新建一个android工程:TestJNI
然后右键工程
![](http://img.blog.csdn.net/20131121113726312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FkZTMzMzc3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://m.blog.csdn.net/blog/wade333777/16847783)
然后左键点一下你的工程就发现
![](http://m.blog.csdn.net/blog/wade333777/16847783)
![](http://img.blog.csdn.net/20131121113921890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FkZTMzMzc3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这个小锤子就可以使用了,这个工具就是用来生成so文件的
接下来就是java调用c/c++的过程了(睁大眼睛,不要走开)
![](http://m.blog.csdn.net/blog/wade333777/16847783)
在这里我们新建一个JNIClient.java类用来调用本地相关文件
然后我们使用mac的控制台terminal,cd到JNIClient.java的目录,然后javac JNIClient.java生成JNIClient.class文件
然后我们再cd到src目录javah com.example.wade.JNIClient,会在src目录下生成com.example.wade.JNIClient.h文件
![](http://m.blog.csdn.net/blog/wade333777/16847783)
![](http://img.blog.csdn.net/20131121114048468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FkZTMzMzc3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
把这个h文件放在jni目录下,同时新建一个c文件,mk文件里
最后重写C文件
终于到了激动人心的一步了(最后最后一步了)
在我们的主类里调用库文件,然后进行相应方法的调用即可。
这时候运行程序,会发现已经成功!!!
一种是右键工程选择properties->builders->new->program,然后再做相应的选择,因为这种方式我没有尝试过,网上也有例子,所以我就不做详细的说明。
另一种方式:先加载ndk路径:
选择标题栏的Eclipse->Preferences->
然后选择NDK的路径即可。
接下来新建一个android工程:TestJNI
然后右键工程
然后左键点一下你的工程就发现
这个小锤子就可以使用了,这个工具就是用来生成so文件的
接下来就是java调用c/c++的过程了(睁大眼睛,不要走开)
在这里我们新建一个JNIClient.java类用来调用本地相关文件
package com.example.wade; publicclass JNIClient { static publicnative String AddStr(String strA,String strB); static publicnative int AddInt(int a,int b); }
然后我们使用mac的控制台terminal,cd到JNIClient.java的目录,然后javac JNIClient.java生成JNIClient.class文件
然后我们再cd到src目录javah com.example.wade.JNIClient,会在src目录下生成com.example.wade.JNIClient.h文件
把这个h文件放在jni目录下,同时新建一个c文件,mk文件里
LOCAL_SRC_FILES := com_example_wade_JNIClient.c
最后重写C文件
#include"com_example_wade_JNIClient.h" #include<stdlib.h> #include<stdio.h> #ifdef __cplusplus extern"C" { #endif /* * Class: com_example_wade_JNIClient * Method: AddStr * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_example_wade_JNIClient_AddStr(JNIEnv *env, jclass arg, jstring a, jstring b) { jstring str = (*env)->NewStringUTF(env,"HelloWorld from JNI !"); return str; } /* * Class: com_example_wade_JNIClient * Method: AddInt * Signature: (II)I */ JNIEXPORT jint JNICALL Java_com_example_wade_JNIClient_AddInt(JNIEnv *env, jclass arg, jint a, jint b) { return a + b; } #ifdef __cplusplus } #endif
终于到了激动人心的一步了(最后最后一步了)
public class MainActivityextends Activity { static{ System.loadLibrary("wade"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String str = JNIClient.AddStr("",""); System.out.println(""+str); int sum = JNIClient.AddInt(3, 4); System.out.println("sum:"+sum); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); returntrue; } }
在我们的主类里调用库文件,然后进行相应方法的调用即可。
这时候运行程序,会发现已经成功!!!
相关文章推荐
- Eclipse下NDK开发(java调用so文件)
- Eclipse下NDK开发(java调用so文件)
- eclipse上ndk环境的搭建&&so文件的生成&&jni文件的调用
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- NDK 通过java调用so文件
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- windows下使用eclipse java程序调用.so文件
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- NDK不用cygwin,只用eclipse开发,照样能编译成 .so文件
- Android-NDK开发之第四个例子--用C/C++调用Java
- 用eclipse开发android,xml-layout文件不自动提示,Java代码可以自动提示
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- NDK开发之c++调用java
- Android-NDK开发之第四个例子--用C/C++调用Java
- android java文件调用.so文件
- 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件
- Loadrunner11如何成功调用eclipse开发的Java代码
- ndk开发之利用android系统中.so库文件(例:libsqlite.so)
- Android Eclipse JNI 调用 .so文件加载问题
- Eclipse插件开发-调用默认编辑器打开指定文件