今天因工作安排开始搞ndk开发.
以前也没有搞过.只是大约听说过开发的流程,另外也在网上找了一个小小的例子.
例子来源于:http://www.cnblogs.com/imagelab/archive/2011/08/20/2147023.html
感谢网友的分享.
我主要记录一下安装开发环境和调试这个小例子时遇到的问题.我是基于windows下的eclipse与远程ubuntu 64位服务器来做的.
1.安排NDK开发环境:
首先下载最新的NDK开发包.android-ndk-r6b-linux-x86.tar.tar这是我下载的.
这个环境主要用于编译C/C++代码,所以安装在ubuntu之下.把包解压在ubuntu之下,并修改环境变量.
$cd ~
$vi ./bashrc
在最后加上一行:export PATH=$PATH:/home/admin-andesen/programfile/android-ndk-r6b
这个路径就是你解压包之后的路径,按你自己的实际情况来写了.
改好之后保存退出,关闭当前远程控制台连接并重新打开一个连接以使之前修改的环境变量启用.
$echo $PATH
来确认一下环境变量是否已包含刚加入的那一部分.
$ndk-build
若无返回command not find,即说明已安装成功.
2.实验程序流程
通过samba在远程服务器上指定好一个workspace,然后在windows下打开eclipse并将工作区指向刚刚指定好的workspace.
新建一个android 工程,项目名称是IDETest.包名是com.test.IDETest.这个地方要注意一下eclipse会自动生成activity的名称,即在你写入的项目名后自动加上Activity字串,如:IDETestActivity.这个东西让我在后面吃了很大一个亏,以至这个小实验我搞了很久才调通.
修改IDETestActivity.java的内容如下:
package com.test.IDETest;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class IDETestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tview = (TextView)findViewById(R.id.textview01);
tview.setText(generateID("998877"));
}
//声明本地函数
public native String generateID(String label);
//加载本地函数库
static
{
System.loadLibrary("IDETest");
}
}
然后在项目中新建一个文件夹叫jni,在其中新建空文件IDETest.c 和Android.mk