安卓NDK开发环境配置与生成so文件方法二

上一篇文章介绍了利用eclipse来进行ndk开发生成so文件,该文章介绍利用终端命令行生成so文件,并补充NDK环境下载配置。

1. 电脑上需要下载相应版本的ndk,我是用的是android-ndk-r14b-windows-x86_64版本,相应的版本下载请参考博文http://blog.csdn.net/shuzfan/article/details/52690554,该博主太伟大了,整理了出来。下载之后直接解压放在固定目录即可;

2. 将ndk-build.cmd所在的目录添加到系统变量当中,之后再利用终端生成so文件时,直接在工程目录下面敲ndk-build即可,不需要再去指定它所在的目录,增加系统变量方法不在详细介绍,简单而且教程很多,添加结果下图所示:



再终端输入ndk-build -h出现一些帮助提示说明如下图,说明ndk开发环境配置完成,如果步骤正确没出现,电脑重启一次试一下,我第一次是这样解决的,这里需要注意的是高版本的NDK添加的目录一定是添加到build文件夹,根文件夹下运行ndk-build会报错的。


3. 利用eclipse建立一个安卓工程,然后在工程目录下新建一个jni文件夹用来存放c/c++和mk文件,在上一篇的方法是利用eclipse自动生成的

4. 编写MainActivity内容,加载库,调用静态方法,我的示例代码如下:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		TextView tv = new TextView(this);
		tv.setText(String.valueOf(getNum())); 
		setContentView(tv); 
	}
	private native int getNum(); 

	static {
		System.loadLibrary("Abcd"); 
	}
}
5. 利用javah生成项目的h头文件,在编写c++文件时要用到,利用javah可以在终端任意目录下使用,但需要配置加载类的路径-classpath,还有就是设置生成存放目录,所以我就用的懒汉模式,直接在工程的src目录下执行javah -jni com.example.abcd.MainActivity(包名+相应的类名)即可生成com_example_abcd_MainActivity.h文件,生成的文件是在src目录下,你在复制到jni文件夹下面就ok了

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_abcd_MainActivity */

#ifndef _Included_com_example_abcd_MainActivity
#define _Included_com_example_abcd_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_abcd_MainActivity
 * Method:    getNum
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_example_abcd_MainActivity_getNum
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif
6. 编写c++的方法实现

#include <jni.h>
#include <com_example_abcd_MainActivity.h>

jint Java_com_example_abcd_MainActivity_getNum
    (JNIEnv *,jobject) {
    return 666;
}
需要注意一定要包含#include <com_example_abcd_MainActivity.h>声明,否则会报错找不到getNum方法,其次是编写Android.mk和Application.mk文件,参照上一篇方法即可


7. 在工程目录下,子目录下也可以,在终端输入ndk-build命令即可完成so文件生成。

8. 在eclipse中运行程序就可以了,效果如下


注意:在执行过终端命令后,如果eclipse里面的工程没有显示生成的文件,记得右键 刷新工程,或者快捷键F5刷新即可。

Windows终端查看文件列表命令是dir,而不是ls,切换盘符是直接盘符回车(d:)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值