ndk初体验
(其实只是写了个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++虽然一样,但是名字不一样。
好,写到这里,去上毛概。
明天继续努力,优化转换算法。
更多相关文章
- xml文件内引用资源
- 获取android源码的问题
- Android(安卓)Studio打包时如何将版本号修改成apk名字
- Android(安卓)6.0下报错: UnsatisfiedLinkError: dlopen failed
- 【Android】短信管理代码
- Android(安卓)Studio 移动项目到新文件夹,Installation failed wi
- Android5.1 Framework分析----如何在SystemServer中添加系统服务
- 042android初级篇之android混淆代码ProGuard
- 四.Android编写代码规范