public class MainActivity extends Activity {
static {
System.loadLibrary("mylib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle(getMyData());
}
public native String getMyData();
}
创建jni文件夹,天假Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := mylib LOCAL_SRC_FILES := com_example_firstndk_MainActivity.c include $(BUILD_SHARED_LIBRARY)
这里面需要根据 javah命令 生成相应的 xxx.h 头文件
1.在Eclipse里面,使用externl tools来生成
a. run->externl tools->externl tools Configurations->new Program
Location:是命令的位置
Working Diretory:是在哪个目录下执行命令
Arguments:就是参数了
b.点击Refresh,勾选Refresh resources upon completion
选择Specific resources ,点击Specify Resources Button
选择工程下的jni
然后apply--->run ,就能生成相应的xxx.h头文件了
实现文件:
#include "com_example_firstndk_MainActivity.h" JNIEXPORT jstring JNICALL Java_com_example_firstndk_MainActivity_getMyData( JNIEnv * pEnv, jobject pThis) { return (*pEnv)->NewStringUTF(pEnv,"My native project talks C++"); }
---------------插入一个例子,如果打开eclipse_workspace的设置
这就是打开eclipse_workspace
--------------------------------------------------------------------------------------------
在Eclipse里面编译C/C++代码(先安装CDT)
1.将android工程 convert to C/C++ project
2.工程-->propotices->C/C++ Build
不要勾选Use default build command
Build command:/Users/mac/work/android-ndk-r8e/ndk-build
为了让修改代码后,自动编译,
点击Behaviour选项卡:
勾选 Build on resources save(Auto build) all
Apply-->OK
3.由于程序里面用到了一些头文件,所以需要引入
C/C++ General->Path and Symbols
Includes (就是引入头文件) Add-->加上使用了的就可以了
Sources Location (就是代码位置)暂时先不管 Apply->OK
4.由于Eclipse的语法检验C/C++不怎么好,正确的代码也会报错
C/C++ General->Code Analysis
勾选 Use project settings
使 下面 Syntax and Semantic Errors 不要勾选上。
然后就可以开始Run了