开发流程:
参考的c库是arm下的
创建一个android工程
操作一 在java 代码里 定义一个native 方法 public native String helloFromC();
操作二 在android的工程里创建一个jni的文件夹
创建一个.mk的文件:作用如何的编译
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=Hello // 生成的,so文件名字
LOCAL_SRC_FILES :=Hello.c // c文件
#liblog.so libGLESv2.so
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
在 jni目录创建C代码,实现java里的方法
#include<stdio.h>
#include<jni.h>
返回值类型 Java_包名_类名_方法名字(JNIEny* env,jobject obj){ }
操作三 在java代码加载.so文件
static {
System.loadLibrary("so文件");
}
zxc@zxc-PC ~
$ cd ..
zxc@zxc-PC /home
$ cd
zxc@zxc-PC ~
$ cd..
-bash: cd..: command not found
zxc@zxc-PC ~
$ cd..
-bash: cd..: command not found
zxc@zxc-PC ~
$ cd ..
zxc@zxc-PC /home
$ cd ..
zxc@zxc-PC /
$ ls
bin cygdrive Cygwin.bat Cygwin.ico Cygwin-Terminal.ico dev etc home lib proc tmp usr var
zxc@zxc-PC /
$ ^C
zxc@zxc-PC /
$ cd cygdrive
zxc@zxc-PC /cygdrive
$ ls
c d e f
zxc@zxc-PC /cygdrive
$ cd f
zxc@zxc-PC /cygdrive/f
$ cd workSpacedemo
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd /work_demo
-bash: cd: /work_demo: No such file or directory
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd helloJni
-bash: cd: helloJni: No such file or directory
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd helloJni
-bash: cd: helloJni: No such file or directory
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd work_demo
zxc@zxc-PC /cygdrive/f/workSpacedemo/work_demo
$ cd helloJni
zxc@zxc-PC /cygdrive/f/workSpacedemo/work_demo/helloJni
$ ndk-build
Cygwin : Generating dependency file converter script
Compile thumb : Hello <= Hello.c
SharedLibrary : libHello.so
Install : libHello.so => libs/armeabi/libHello.so
参考的c库是arm下的
创建一个android工程
操作一 在java 代码里 定义一个native 方法 public native String helloFromC();
操作二 在android的工程里创建一个jni的文件夹
创建一个.mk的文件:作用如何的编译
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=Hello // 生成的,so文件名字
LOCAL_SRC_FILES :=Hello.c // c文件
#liblog.so libGLESv2.so
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
在 jni目录创建C代码,实现java里的方法
#include<stdio.h>
#include<jni.h>
返回值类型 Java_包名_类名_方法名字(JNIEny* env,jobject obj){ }
操作三 在java代码加载.so文件
static {
System.loadLibrary("so文件");
}
zxc@zxc-PC ~
$ cd ..
zxc@zxc-PC /home
$ cd
zxc@zxc-PC ~
$ cd..
-bash: cd..: command not found
zxc@zxc-PC ~
$ cd..
-bash: cd..: command not found
zxc@zxc-PC ~
$ cd ..
zxc@zxc-PC /home
$ cd ..
zxc@zxc-PC /
$ ls
bin cygdrive Cygwin.bat Cygwin.ico Cygwin-Terminal.ico dev etc home lib proc tmp usr var
zxc@zxc-PC /
$ ^C
zxc@zxc-PC /
$ cd cygdrive
zxc@zxc-PC /cygdrive
$ ls
c d e f
zxc@zxc-PC /cygdrive
$ cd f
zxc@zxc-PC /cygdrive/f
$ cd workSpacedemo
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd /work_demo
-bash: cd: /work_demo: No such file or directory
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd helloJni
-bash: cd: helloJni: No such file or directory
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd helloJni
-bash: cd: helloJni: No such file or directory
zxc@zxc-PC /cygdrive/f/workSpacedemo
$ cd work_demo
zxc@zxc-PC /cygdrive/f/workSpacedemo/work_demo
$ cd helloJni
zxc@zxc-PC /cygdrive/f/workSpacedemo/work_demo/helloJni
$ ndk-build
Cygwin : Generating dependency file converter script
Compile thumb : Hello <= Hello.c
SharedLibrary : libHello.so
public class HelloJniActivity extends Activity {
/** Called when the activity is first created. */
public native String helloC(); // 声明一个C代码
//加载编译后的.so文件
static {
System.loadLibrary("Hello");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setTextSize(50);
tv.setText(helloC());
setContentView(tv);
}
}
#include <stdio.h>
#include <jni.h>
jstring Java_day1_jni_hello_HelloJniActivity_helloC(JNIEnv* env, jobject obj) {
//return (*(*env)).NewStringUTF(env,"hello from c");
return (*env)->NewStringUTF(env, "hello from c");
}
android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=Hello
LOCAL_SRC_FILES :=Hello.c
#liblog.so libGLESv2.so
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
Install : libHello.so => libs/armeabi/libHello.so
zxc@zxc-PC /cygdrive/f/workSpacedemo/work_demo/helloJni