eclipse配置生成.h和.so文件过程
来源:互联网 发布:封面制作软件ios 编辑:程序博客网 时间:2024/06/05 01:01
在eclipse中生成.h文件需要安装JDK
生成.so文件需要安装:cygwin、android-ndk
因为这两个文件太大。我就不上传,自行百度。先安装以上环境在进行以下操作。
1、创建android工程
在这里我选择的是android API 5.0
选好后一直接Next直到android工程创建好。
2.右键工程 ----new -----Folder(创建JNI文件夹)
因为手动创建的jni文件夹下面没有任何东西。这时候我们需要手动创建Android.mk文件。
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := YHJniLOCAL_SRC_FILES := YHJni.cinclude $(BUILD_SHARED_LIBRARY)public class HelloNative { public native String hello(); public native int algorithm(int a ,int b);}
public class HelloNative { public native String hello(); public native int algorithm(int a ,int b);}
1:Location
里面是输入jdk下的javah.exe路径。我输入的是绝对路劲;点击2选择javah.exe路径。
2:Working Directory
点击4选择刚刚创建android工程的bin
3:Arguments
-classpath .;./classes -d "${workspace_loc:/Hello}/jni" -jni ${java_type_name}
红色部分是引用Working Directory里面的值;把bin去掉
4.2 配置生成.so
1:Location
里面是输入ndk下的ndk_build.cmd路径。我输入的是相对路径(绝对路径也可以);
点击Browse file System选择ndk下的ndk_build.cmd路径。
2: Working Directory
选择刚刚我们在工程下面创建的jni文件(jni文件主要放.c、.h、Android.mk文件)。
---------现在已经配置好.h和.so。接下来我们生成.h,刚刚我们创建的java文件就是生成.h头文件用的。
在点击JavaH生成.h头文件;在点击JavaH时一定要选择生成.h头文件的java文件,不然会报错。点击后我们会发下jni文件夹下面就生成了一个.h文件。
5、生成.h文件的类容:
/* DO NOT EDIT THIS FILE - it is machine generated */#include/* Header for class com_example_hellojni_HelloNative */#ifndef _Included_com_example_hellojni_HelloNative#define _Included_com_example_hellojni_HelloNative#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_hellojni_HelloNative * Method: hello * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloNative_hello (JNIEnv *, jobject);/* * Class: com_example_hellojni_HelloNative * Method: algorithm * Signature: (II)I */JNIEXPORT jint JNICALL Java_com_example_hellojni_HelloNative_algorithm (JNIEnv *, jobject, jint, jint);#ifdef __cplusplus}#endif#endif
在.c文件中引用.h头文件,在把.h中的接口实例化,在其中进编码。
#include "com_example_hellojni_HelloNative.h"JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloNative_hello (JNIEnv *env, jobject obj){return "hello worid";}JNIEXPORT jint JNICALL Java_com_example_hellojni_HelloNative_algorithm (JNIEnv *env, jobject obj, jint a , jint b){return a+b;}
6、生成.so文件
点击NDK_Buider(该名字是自己定义,点击自己定义就好)出现控制台内的内容就成功生成.so文件。刷新工程,在libs/armeabi下面就会有.so文件。
7、android调用.so
android调用.so直接贴代码就不一一讲解:
package com.example.hellojni;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{static{System.loadLibrary("HelloJni");}private Button button,button1;private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button =(Button)findViewById(R.id.button);button.setOnClickListener(this);button1 =(Button)findViewById(R.id.button1);button1.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.button:String str = new HelloNative().hello();textView =(TextView)findViewById(R.id.text_view);textView.setText("返回的字符串:"+str);break;case R.id.button1:int number = new HelloNative().algorithm(8, 8);textView =(TextView)findViewById(R.id.text_view);textView.setText("返回的字符串:"+number); break;default:break;}}}
因为工作需要第一次接触android;第一次写android调c,c调android,所有写一个小例子,好让以后用到可以后头看看。
接下来可能总结一下纯.c调android。
- eclipse配置生成.h和.so文件过程
- NDK全局环境变量配置和.h/.so文件生成过程详解
- eclipse生成SO文件
- java jni eclipse 环境配置 生成.h头文件
- eclipse JNI NDK 生成.h 文件和签名文件
- AndroidNDK生成so文件配置
- android.mk和gradle两种配置生成so文件
- Android Studio External Tools快速生成.h头文件和.so
- eclipse下NDK生成.SO文件
- 使用eclipse直接生成so文件
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- Android中JNI使用详解(1)---Eclipse中NDK配置So文件生成
- Eclipse android项目中配置NDK自动编译生成so文件
- eclipse迁移到as ndk 不能生成.so文件的配置问题
- android studio 使用.so文件 配置过程
- eclipse上android ndk 配置及使用javah生成jni 的 .h的头文件
- Android-Ndk环境配置&转.h so文件的用法
- hdu6201transaction transaction transaction(最长路spfa vector模板)
- 0911 Oracle基本概念
- 3Layer
- Taints and Tolerations
- 电子之电容测试标准
- eclipse配置生成.h和.so文件过程
- 剑指offer——42.和为sum的两个数字
- 勤智OneCenter:视频监控系统运维解决方案
- linux crontab
- angular内置服务interval和timeout
- Exception Handling in Java
- 谷歌又新增了两个意想不到的功能
- php基础
- Perplexity