码迷,mamicode.com
首页 > 其他好文 > 详细

NDK环境搭建及遇到问题

时间:2015-05-12 17:19:24      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:andriod ndk

1.具体搭建过程可参照http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html

2.测试工程,新建andriod工程。

修改 MainActivity
具体如下

public class MainActivity extends Activity {

	//调用本地c++代码,返回一个字符串,更新到textView中
    public native String stringTestNdk();
    static {
		try {
			System.loadLibrary("NdkDemo");//加载成功
			System.out.println("hello NDK");
		} catch (UnsatisfiedLinkError ule) {//如果加载错误
			System.err.println("WARNING: Could not load library testndk!");
		}
	}
	private TextView textView=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		textView=(TextView) this.findViewById(R.id.tv);
                //调用
                textView.setText(stringTestNdk());
	}
}
在工程文件上右键->Andriod tools->Add Native Support添加需要生成的so,本文由于上面已经写了,NdkDemo

生成JNI文件夹含有NdkDemo.cpp和Andriod.mk(makefile文件)

Andriod.mk需要做如下修改


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
//这个名称要一致
LOCAL_MODULE    := NdkDemo
LOCAL_SRC_FILES := NdkDemo.cpp

include $(BUILD_SHARED_LIBRARY)

NdkDemo.cpp需要做如下修改

#include <jni.h>
#include<string.h>
//com.example.ndkdemo.MainActivity;
// public native String stringTestNdk ();
#include <android/log.h>

extern "C" {

JNIEXPORT jstring JNICALL Java_com_example_ndkdemo_MainActivity_stringTestNdk(JNIEnv *env, jobject thiz);


};
JNIEXPORT jstring JNICALL Java_com_example_ndkdemo_MainActivity_stringTestNdk(JNIEnv *env, jobject thiz)
 {

	return env->NewStringUTF("Hello test NDK !");
 }
注意c++中调用c函数,要添加extern "c"

3 下面是需要提前配置的东东。

windows-》Preferences->>

(1). Andriod 下面的NDK路径配置下(定位到安装路径)

(2).c++ Build下的Environment的New 新建一个环境变量 NDKRoot  值为ndk路径

(3) 工程右键,点Properties->C/C++ Build的Building Settings中去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd

以上基本配置

其余配置可参见http://www.cnblogs.com/yejiurui/p/3476565.html

4  运行

(1)先生成  libNdkDemo.so库

在cmd命令行下,到本工程的目录。

输入 ndk-build回车

刷新工程,就可以看到libs/armeabi有库文件生成。

(2)运行andriod程序即可


问题:

1. 本文采用的模拟器为Genymotion报错信息如下

INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

解决方案:点击下载Genymotion-ARM-Translation.zip

将你的虚拟器运行起来,将下载好的zip包用鼠标拖到虚拟机窗口中,出现确认对跨框点OK就行。然后重启你的虚拟机。

2.

No implementation found for native L 。。。。Ljava/lang/String;

java.lang.UnsatisfiedLinkError: 。。。。

解决方案:

如上代码中添加声明

extern "C" {

JNIEXPORT jstring JNICALL Java_com_example_ndkdemo_MainActivity_stringTestNdk(JNIEnv *env, jobject thiz);


};

其余错误可参见http://blog.csdn.net/houshunwei/article/details/17217695

NDK环境搭建及遇到问题

标签:andriod ndk

原文地址:http://blog.csdn.net/nothingl3/article/details/45670407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!