菜单

Android图文介绍NDK安装及简单jni demon的实现402.com:

2019年10月13日 - 计算机教程

1.背景

Android
NDK可以用来编译android的native方法,也可以将c和c++的代码编译成.so文件,让android程序运行。

2.NDK安装(linux环境)

(1)下载对应的ndk版本,在shell里输入如下命令

gedit ~/.bashrc

(2)打开bash文件,添加下载的ndk路径

NDKROOT=/home/CORPUSERS/28852262/android-ndk-r9c

export PATH=$NDKROOT:$PATH

(3)输入如下命令,然后重启shell

source /etc/profile

(4)在shell中输入ndk-build,出现如下状态说明安装成功

402.com 1

3.jni第一个demon helloworld

(1)编写hello-jni.c文件。

#include <string.h>
#include <jni.h>

/* This is a trivial JNI example where we use a native method
 * to return a new VM String. See the corresponding Java source
 * file located at:
 *
 * 
apps/samples/hello-jni/project/src/com/example/hellojni/HelloJni.java
 */
jstring
Java_com_example_hellojni_HelloJni_aa( JNIEnv* env,
                                                  jobject thiz )
{
#if defined(__arm__)
  #if defined(__ARM_ARCH_7A__)
    #if defined(__ARM_NEON__)
      #define ABI “armeabi-v7a/NEON”
    #else
      #define ABI “armeabi-v7a”
    #endif
  #else
  #define ABI “armeabi”
  #endif
#elif defined(__i386__)
  #define ABI “x86”
#elif defined(__mips__)
  #define ABI “mips”
#else
  #define ABI “unknown”
#endif

    return (*env)->NewStringUTF(env, “Hello from JNI !  Compiled
with ABI ” ABI “.”);
}

这个c文件实现输出一个string型函数,注意这里

Java_com_example_hellojni_HelloJni_aa

我们创建android应用的时候包和函数命名要和这个对应,否则汇报错:native
method is not found。如下图

402.com 2

(2)编写android.mk文件,相关资源在最后

(3)注意文件夹名要是jni,否则ndk不识别

402.com 3

(4)shell中进入相关路径下面执行

ndk-build

(5)将生成的libs文件和已经编号的jni导入工程

402.com 4

(6)看下主程序代码,注意注释

public class HelloJni extends Activity {

    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_jni);

 

    tv=(TextView)findViewById(R.id.textView1);

    Button bt2 = (Button)findViewById(R.id.button1);

    bt2.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
          tv.setText(aa());
      }
    });
}

public native String 
aa();//native方法,对应c文件Java_com_example_hellojni_HelloJni_aa中的aa

static {

   
System.loadLibrary(“hello-jni”);//注意名字是是libhello-jni.so去掉lib和后缀

}
}

(7)效果

点击按钮:出现一串话

最后把工程上传,我的工程是公司的sdk,所以大家用的时候要换成自己的。lib和jni都是通用的,have
fun!

资源下载,亲测可用!

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2014年资料/3月/17日/Android图文介绍NDK安装及简单jni
demon的实现

下载方法见
http://www.linuxidc.com/Linux/2013-07/87684.htm

推荐阅读

使用hello-gl2建立NDK-gdb环境(有源码和无源码调试环境)
http://www.linuxidc.com/Linux/2013-06/85935.htm

基于Android NDK开发实践案例解析
http://www.linuxidc.com/Linux/2013-03/81676.htm

解决不使用Android NDK编译的bin文件No such file or directory问题
http://www.linuxidc.com/Linux/2013-03/80591.htm

Android NDK :编写清晰的代码结构
http://www.linuxidc.com/Linux/2012-07/66105.htm

Android开发教程:NDK编译静态库失败
http://www.linuxidc.com/Linux/2012-06/64020.htm

更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11

402.com 5

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图