NDK环境搭建及遇到问题
来源:互联网 发布:手游推荐 知乎 编辑:程序博客网 时间:2024/04/30 09:47
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;@Overrideprotected 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 := NdkDemoLOCAL_SRC_FILES := NdkDemo.cppinclude $(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环境搭建及遇到问题
- android+NDK环境搭建遇到的问题
- Android NDK环境搭建及注意问题
- LAMP环境搭建及遇到的问题
- 【angular】环境搭建及遇到的问题
- 搭建QT环境时遇到的问题及解决方案
- 搭建Android开发环境及遇到的问题
- cocos2d-x android环境搭建及遇到的问题
- Windows系统搭建Android环境及遇到的问题解析
- ActionBarActivity环境搭建步骤及遇到的问题总结
- ActionBarActivity环境搭建步骤及遇到的问题总结
- ActionBarActivity环境搭建步骤及遇到的问题总结
- win7搭建javaweb项目环境过程及遇到的问题
- ActionBarActivity环境搭建步骤及遇到的问题总结
- MAVEN环境搭建中遇到的问题及解决方案
- 搭建ubuntu环境时遇到的问题及解决方法
- 深度学习开发环境搭建遇到的问题及解决方案
- CentOS下搭建LAMP环境及遇到的问题
- C语言指针
- 各个版本android开发环境下载
- C#数组的合并拆分
- Oracle 的 Sql*Plus 常用命令介绍
- 单源最短路径问题[Dijkstra实现]
- NDK环境搭建及遇到问题
- iOS 8.3 64Bit Integer转为Bool变化
- 在禁止了页面的触摸拖动事件之后如何允许某div可以拖动
- 幼儿园APP
- 我来出个C++面试题
- VI命令
- Android 网络请求框架android-async-http的一个细节问题(org.apache.http.client.CircularRedirectException异常)
- 工厂方法模式(Factory Method)
- redhat5.8 安装 SaltStack