JNI自己写NDK开发学习 2015年9月

花了好几天时间,断断续续的尝试,终于把NDK开发环境搭建好了。

网上已经有了很多的教程,但是自己尝试过程中还是会遇到很多很多的问题,有些在教程中是找不到的,所以把自己搭建的过程记录下来。


相信今后Android Studio提高JNI开发的时候,会省去这些麻烦的步骤


材料1. Eclipse,ADT,SDK 如果Android开发环境还不会搭建的话,建议看其他的

         2.NDK 版本android-ndk-r8d

            CDT 版本 8.6.0

   Cygwin (虽然很多教程说r8已经集成了Cygwin,但是博主搞了很久没搞明白如何使用,干脆下载了Cygwin,安装gcc等重要工具)


安装过程略


第一个程序:在使用android-ndk-r8d/samples/hellojni运行成功之后,再自己手写一个hellojni2,这样能更加明白Eclipse下JNI工程的结构。

这里只涉及到java调用C的过程

步骤一

在工程下新建jni 文件夹,编写c代码(示例代码)

#include<string.h>
#include<jni.h>
jstring Java_com_example_hellojni3_MainActivity_getStringFromJni(JNIEnv *env,
		jobject obj){
  return (*env)->NewStringUTF(env,"jcc");
}


步骤二

在工程的jni下编写make, 

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := hellojni
LOCAL_SRC_FILES := hellojni.c

include $(BUILD_SHARED_LIBRARY)



步骤三

 打开cygwin,使用模拟linux命令行进入到工程文件夹下面,使用命令$NDK/ndk-build 完成编译,生成hellojni.so文件

其中,$NDK是在cygwin的/home/user/.bash_profile中配置的NDK的根目录,这个命令相当于在工程文件夹下执行ndk-build命令

ndk-build相当于linux命令make,会自动寻找Android.mk文件,完成编译过程


步骤四:

在static代码块中调用生成的hellojni.so文件

java的native

</pre><pre name="code" class="java">
protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv=(TextView)findViewById(R.id.tv);
		tv.setText(getStringFromJni());
	}
	
	public native String getStringFromJni();
	
	static{
		System.loadLibrary("hellojni");
	}

System.loadLibrary("生成的.so文件,不带扩展名");是加载.so文件,在static代码块中,说明当该类第一次被加载到Java虚拟机的时候,hellojni已经被调用了


步骤五 运行android工程




         


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值