linux下eclipse构建并编译android一个简单jni项目
2015-01-15 00:03
302 查看
第一,java源代码的编写,在eclips下面新建android工程,创建helloJNI.java
packagecom.john.helloJNI;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.widget.TextView;
publicclasshelloJNIextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextViewJNITest=(TextView)findViewById(R.id.jniTextView);
Log.i("hellojni","before!/n");
Stringstr=getJNItest();
Log.i("hellojni","before!/n");
JNITest.setText(str);
}
static{
System.loadLibrary("JNITest");
}
publicnativeStringgetJNItest();
}
在命令行下进入工程所在目录,运行
packagecom.john.helloJNI;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.widget.TextView;
publicclasshelloJNIextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextViewJNITest=(TextView)findViewById(R.id.jniTextView);
Log.i("hellojni","before!/n");
Stringstr=getJNItest();
Log.i("hellojni","before!/n");
JNITest.setText(str);
}
static{
System.loadLibrary("JNITest");
}
publicnativeStringgetJNItest();
}
在命令行下进入工程所在目录,运行
javah-classpathbin-djnicom.john.helloJNI.helloJNI -d的含义是生成一个jni的目录,里面存放生成的jni的.h文件,com.john.helloJNI.helloJNI是类,生成com_john_helloJNI_helloJNI.h 编写com_john_helloJNI_helloJNI.c #include"com_john_helloJNI_helloJNI.h" JNIEXPORTjstringJNICALLJava_com_john_helloJNI_helloJNI_getJNItest(JNIEnv*env,jobjectobj) { return(*env)->NewStringUTF(env,(char*)"JNITestNativeString"); } 编写android.mk LOCAL_PATH:=$(callmy-dir) include$(CLEAR_VARS) LOCAL_SRC_FILES:=/ com_john_helloJNI_helloJNI.c LOCAL_C_INCLUDES:=/ $(JNI_H_INCLUDE) LOCAL_PRELINK_MODULE:=false LOCAL_MODULE:=libJNITest LOCAL_MODULE_TAGS:=optional include$(BUILD_SHARED_LIBRARY) 把这二个文件com_john_helloJNI_helloJNI.c和android.mk放在前面建立的jni目录下 其实可以手动在ndk里面编译这3个文件,但是最好还是用eclipse来编译,这样有什么错误修改源代码也更方便。 在eclipse里面右击工程项目,选择最后一个properties,选择Builders->new->Program.这个时候会出现一个选项卡菜单。 Main选项卡中 location填写/bin/bash(因为我用的是unbuntu) workingDirectory填写/bin Argument填写 --login-c"cd/home/john/android/workspace/desktop/jni&&/home/john/android/android-ndk-r5/ndk-build" 这里--login是登录bash,-c是命令,cd后面是刚才创建jni目录,&&是说明还需要继续运行后面的命令,后面就是ndk的ndk-bulid文件 所在的目录了。 如图
后面的Reflesh选项卡和BuildOption选项卡如下图
其中二个的SpecifyResources都要选中前面创建的jni文件夹。
现在配置完成了,退出后就可以看到eclipse自动在编译了,如果编译成功,会在工程目录下同步生成一个文件夹libs/armeabi,里面会有
生成的so文件。
简单的jni完成了,现在开始准备动手做项目了。
相关文章推荐
- linux下eclipse构建并编译android一个简单jni项目
- linux下eclipse构建并编译android一个简单jni项目
- 用Eclipse+Cygwin+CDT+NDK来创建一个简单的Android JNI 项目
- SpringBoot入门系列:eclipse如何构建一个最简单的springBoot项目。
- Cocos2dx 3.0开发环境搭建--Eclipse上构建一个Android项目
- Cocos2d-x 3.0 - Eclipse上构建一个Android项目
- Cocos2d-x 3.0 - Eclipse上构建一个Android项目
- Android JNI(NDK)简单学习(环境搭建,创建一个JNI项目的基本流程)
- gradle学习系列之eclipse中简单构建android项目
- Cocos2dx 3.0开发环境搭建--Eclipse上构建一个Android项目
- gradle学习系列之eclipse中简单构建android项目
- 编译Android源码 解决:[out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o] 错误 1
- 搭建arm-linux-gcc交叉编译工具链环境(Android原生(JNI)开发环境搭建)
- 解决eclipse开发的android工程在linux上编译不过的@Override问题
- 创建一个较简单的 eclipse+android+maven 工程
- maven 学习笔记(二)创建一个简单的 eclipse+android+maven 工程
- 为Android项目添加Proguard混淆编译的简单方法
- 使用Tortoise SVN版本控制Eclipse工作区的Android项目时,bin编译错误
- Linux中编译一个简单的源文件的过程
- 使用Tortoise SVN版本控制Eclipse工作区的Android项目时编译错误(zz)