(其实只是写了个helloworld)

1.跟往常一样,先建一个Android的project

2.在工程的根目录下面建一个jni的文件夹,里面创建你需要用到的c/c++源文件以及Android.mk.

3.编写c/c++代码:以下是我的测试:

#include <jni.h> //这个加上 jstring Java_cn_com_alfred_MyJNI_stringFromJNI(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Alfred, I love you!/nYou are the best"); }

4.编写Android.mk,实际上这是一个makefile,用来告诉NDK需要编译哪些文件,生成哪些模块

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := MyJNI LOCAL_SRC_FILES := test.c include $(BUILD_SHARED_LIBRARY)

其中LOCAL_PATH表示c/c++源代码文件的位置;LOCAL_MODULE表示生成的共享库的名称;LOCAL_SRC_FILES代表c/c++代码的文件。不需要把头文件列在里面;头文件的依赖关系是ndk自动计算的。

5.修改java代码:

package cn.com.alfred; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MyJNI extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView textView = (TextView)findViewById(R.id.textView); textView.setText(stringFromJNI()); } public native String stringFromJNI(); //在java文件声明这个函数 static { System.loadLibrary("MyJNI"); //读入共享库 } }

6.编译:此处直接用Eclipse的直接编译

选中项目,选project->Properites->Builders->New->Program

Main 选项卡:

Name:Android NDK Builder

Location: D:/cygwin/bin/bash.exe

WorkDirectory: D:/cygwin/bin

Arguments:

--login -c "cd /cygdrive/E/test/workspaces/eclipse/MyJNI/jni && $NDK/ndk-build"

不多说,一看就能明

这里要specify到你的项目

同样这里也要specify你的project。然后点ok。

要勾上。

不过要注意,此后他经常会build,搞到你写代码非常烦,可以在写完代码需要看效果的时候再勾上。

到此,完毕。

但是,写起程序来还是要注意很多东西,什么类型的跟c/c++虽然一样,但是名字不一样。

好,写到这里,去上毛概。

明天继续努力,优化转换算法。

更多相关文章

  1. xml文件内引用资源
  2. 获取android源码的问题
  3. Android(安卓)Studio打包时如何将版本号修改成apk名字
  4. Android(安卓)6.0下报错: UnsatisfiedLinkError: dlopen failed
  5. 【Android】短信管理代码
  6. Android(安卓)Studio 移动项目到新文件夹,Installation failed wi
  7. Android5.1 Framework分析----如何在SystemServer中添加系统服务
  8. 042android初级篇之android混淆代码ProGuard
  9. 四.Android编写代码规范

随机推荐

  1. android打开相册选取图片或打开相机拍照
  2. 如何在Android系统中添加系统服务(以Powe
  3. Android开发常用网站收集整理中。。。。
  4. android 签名打包和出现的问题transformC
  5. Android黑群出品:SQLite数据库的使用和升
  6. android资源文件中ids.xml的使用
  7. Android(安卓)OpenGLES 实现结构
  8. Android程序 依赖库引用Gson 报java.lang
  9. Cordova 5.3.3(PhoneGap)Android(安卓)开发
  10. Android(安卓)1.5 SDK与SDK开发教程