首发地址:http://www.eoeandroid.com/thread-201993-1-1.html
一、 工程创建
1. 创建一个Android工程
配置好开发环境并加载好对应版本sdk后,选择菜单File->New-> Project创建工程,工程类型选择Android Project,如下图所示:

点击next,在工程属性选项里面填入你所希望的工程名、使用的Android SDK版本、应用程序名称、包名、Activity类名等信息,然后点击Finish按钮完成创建。
1. 添加NDK需要的文件夹与文件
在工程文件夹下创建新的文件夹jni,并在jni文件夹下作为C源文件的文件,完成后工程目录示例如下:

如下图所示:

二、 NDK部分
1. 编写C语言程序
NDK开发所使用的C或者CPP文件一般放置于jnc目录下,文件需要包含jni.h头文件以提供JNI相关支持,所编写的程序必须符合JNI调用接口规范。详见《JNI使用规范》。
2. mk文件添加
在jni目录下添加Android.mk文件,文件类容如下:
其中,LOCAL_PATH语句指定了编译路径;LOCAL_MODULE指定了编译生成的共享库的名称,LOCAL_SRC_FILES语句制定了编译文件名。

3.生成so共享库
打开Cygwin程序,进入工程JNI文件夹,然后执行NDK文件夹下的ndk-build文件,生成共享库。

编译成功完成后,可以在工程libs/armeabi文件夹下看到生成的共享库,目录示例如下:

至此,共享库部分完成。
三、 JAVA部分
1. 添加类的本地接口
在类的实现中添加函数接口,接口声明native表明其实现使用的是共享库方式,并加载对应的共享库。

2. mk文件添加

在jni目录下添加Android.mk文件,文件类容如下:

2. 调用本地接口
调用本地接口的方式与调用其他接口方式并无区别,示例得到的结果如下:

源码:NDKDemo.rar

转载于:https://www.cnblogs.com/nuliniaoboke/archive/2012/11/01/2749412.html

Android NDK工程创建与编译运行相关推荐

  1. android源码中的ndk,如何在不需要Android操作系统源代码的情况下在Android NDK中创建新的NativeWindow?...

    我想编译一个Android OpenGL控制台应用程序,您可以直接从控制台启动Android x86或从Android x86 GUI中的Android终端应用程序运行.如何在不需要Android操作 ...

  2. ZynqLinux最小系统系列—— 4、Petalinux工程创建与编译以及烧写到FLASH(二)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZynqLinux最小系统系列-- 4.Petalinux工程创建与编译以及烧写到FLASH(二) 写在前面 接上一篇 烧写FLASH ...

  3. 【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!...

    首先还没有配置好环境并正常运行Cocos2dx自带的test.android例子的童鞋先把环境都搭建好吧:[iOS-cocos2d-X 游戏开发之三]Mac下配置Android NDK环境并搭建Coc ...

  4. 【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )

    文章目录 一.VirtualAppEx 简介 二.配置 VirtualAppEx 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配 ...

  5. 【Android 插件化】DroidPlugin 编译运行 ( DroidPlugin 简介 | 编译 DroidPlugin 官方示例 | 运行 DroidPlugin 官方示例 )

    文章目录 一.DroidPlugin 简介 二.DroidPlugin 编译运行 1.编译 DroidPlugin 官方示例 2.运行 DroidPlugin 官方示例 一.DroidPlugin 简 ...

  6. 能用文件的安卓c语言,使用android NDK将.C 文件编译为 手机 可执行程序或者.so

    现有这样一个helloworld.c的源文件,如下: #include int main(){ printf("Hello world!\n"); } 如何将它进行编译,并在And ...

  7. 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )

    文章目录 一.VirtualApp 简介 二.配置 VirtualApp 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配置远程仓 ...

  8. Android NDK升级17后编译提示找不到mips64el-linux-android-strip

    因为最近要研究下litho, 随手升级了ndk. 结果编译项目时报错: 说是找不到 "D:\Android\sdk\ndk-bundle\toolchains\mips64el-linux- ...

  9. Java工程带库编译运行

    三个源文件,其中二个将打包成库,文件如下 slayer@mons:~/demos/java/pkgunpkg$ tree . ├── build ├── Espanol.java ├── HelloW ...

最新文章

  1. 【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
  2. 算法导论之单源最短路径
  3. ios 开发者账号申请流程 最新
  4. JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
  5. AlertView动画
  6. Python学习 Part6:错误和异常
  7. gwt格式_GWT –利弊
  8. STM32F7xx —— 内部flash
  9. codevs3872 邮递员送信(SPFA)
  10. 部署SpringBoot到阿里云
  11. JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码
  12. 软件测试基础知识 + 面试理论(超详细)
  13. Servlet+JSP实现简易购物车功能
  14. Android Layout
  15. unityShader物体表面流光效果
  16. DSP降噪拾音器 语音增强 噪声抑制器 反馈抑制器
  17. 物联网专业有哪些含金量高的比赛?
  18. 直接在html打开ppt,PPT内如何直接看网页
  19. RSA用私钥加密数据公钥解密数据(不是签名验证过程)
  20. 第二章 pandas基础

热门文章

  1. 《TCP/IP详解》学习笔记(五):IP选路、动态选路
  2. wireshark基本使用及介绍
  3. js获取php单选按钮值,js如何获取radio单选框选中的值
  4. 基于IO流读取的 完成 用户登录,注册,修改,查看所有用户,删除功能
  5. 我的世界有宠物系统的服务器,我的世界1.6.4宠物战争服务器客户端
  6. java socket android_Android:这是一份很详细的Socket使用攻略
  7. phoenix hbase java_java jdbc访问hbase phoenix
  8. php curl 数据采集 空,PHP curl从网站返回空数组的数据
  9. leetcode25. K 个一组翻转链表
  10. postman 不安全网站_接口工具分析(apipost、jmeter、postman)