一.环境准备:

1.Cygwin:对于网速较慢的孩子,可以直接下载一个简约版: http://www.wishdown.com/soft/52987.html

2.安装完毕后(笔者安装路劲为:E:\Android\Cygwin\setup)

1) 修改 E:\Android\Cygwin\setup\etc\defaults\etc\skel \.bash_profile

增加2行:

NDK=/cygdrive/E/Android/NDK/android-ndk-r9d

export NDK

2)同时也要修改 E:\Android\Cygwin\setup\home\lenovo\.bash_profile,增加 第一步的2行

注意:如果没有Home目录::进入环境变量设置,删除用户环境变量home,重新 运行即可产生

3.android-ndk

二.

1.新建一个Android工程HelloWorld,包名为com.apxar.hello

2.工程中:新建一个类HelloAndroidNDK

代码如下,保存

package com.apxar.hello;

public class HelloAndroidNDK {

//静态代码块,在加载类的时候会执行

static

{

System.loadLibrary("HelloMyNDK");

}

//声明加载C库的本地方法

native String sayHello();

}3.Android工程OnCreate函数中添加:

HelloAndroidNDK ndk=new HelloAndroidNDK();

Toast.makeText(this, ndk.sayHello(), Toast.LENGTH_LONG).show();

3.生成 头文件

1)在工程根目录新建一个jni的目录

2)命令行下:cd 进入jni目录

3)使用javah -classpath  D:\android\workspace\HelloWorld\bin  com.apxar.hello.HelloAndroidNDK   //D:\android\workspace\HelloWorld\bin为class的根目录,后面参数                  class的名字,

4)此时在jni目录中将生成com_apxar_hello_HelloAndroidNDK.h头文件

4.编写C语言程序,实现.h头文件:com_apxar_hello_HelloAndroidNDK.c

#include "com_apxar_hello_HelloAndroidNDK.h"

JNIEXPORT jstring JNICALL Java_com_apxar_hello_HelloAndroidNDK_sayHello //这个函数的定义在头文件中已经定义好

(JNIEnv *env, jobject obj)

{

return (*env)->NewStringUTF(env,"Hello Apxar");

}

5.编写Android.mk

1).从ndk中复制出一份样版(本人的目录为E:\Android\NDK\android-ndk-r9d\samples\hello-jni\jni中复制Android.mk)

2).复制到Android工程的jni目录中

3).修改Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := HelloMyNDK   //名称要与:  System.loadLibrary("HelloMyNDK")中的一样

LOCAL_SRC_FILES := com_apxar_hello_HelloAndroidNDK.c   //我们的C语言文件

include $(BUILD_SHARED_LIBRARY)

6.编译链接c程序:

1).在Android-ndk的Samples目录下,新建一个文件夹MyNdkProject 用于存在工程

2).复制Android工程到MyNdkProject 目录下

3).打开Cygwin Bash Shell:

命令:

1)cd $NDK  //进入NDK目录

2)cd samples\MyNdkProject

3)ndk-build

7.Eclcipse重新导入MyNdkProject 中的工程HelloWorld, 工程中多出了libs/armeabi/LibHelloMyNDK.so文件

8.运行

总流程:  创建Android工程->   创建包含nativ本地方法的java类 -> javah工具  class生成.h到jni目录   ->   编写.c-   >   修改Android.mk   ->  编译链接ndk-build  ->android调用该类的方法

android c 调用c,Android NDK 调用C相关推荐

  1. android开发打开第三方库,Android开发NDK调用三方so库

    概要 在日常开发中,android NDK的作用无外乎有两种:一种是通过调用底层C/C++的算法,提高app的运行效率:另一种则是通过C/C++的特性,或者和驱动交互等,实现一些功能性的需求.接下来将 ...

  2. 记录过程: Android Studio4.2通过NDK调用TNN(预编译的tnn so库)

    目录 0. 准备 1. 创建android ndk工程 2. 分析默认生成的工程 3. 写好java native接口 4. 实现这些java native方法(jni) 5. 修改cpp/CMake ...

  3. [免费专栏] Android安全之Android奇淫run-as命令,调用系统受UID限制的API

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知 ...

  4. Android so库开发——Android Studio调用so库(二)

    一.JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivit ...

  5. Unity调用安卓Android的Toast

    需求:在游戏中弹窗消息,调起安卓的Toast 项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试. 方法一:Unity中,C#主导 // Unity调用安卓的土司 ...

  6. Android之ksoap2-android详解与调用天气预报Webservice完整实例

    Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...

  7. Android WebView 和 javaScript的互相调用(三)

    原文出处:http://motalks.cn/2016/08/27/Android-WebView-JavaScript-2/ WebView相关阅读 Android WebView 和 javaSc ...

  8. Android WebView 和 javaScript的互相调用(二)

    原文出处:http://blog.csdn.net/wangtingshuai/article/details/8635787 WebView相关阅读 Android WebView 和 javaSc ...

  9. Android WebView 和 javaScript的互相调用(一)

    原文出处:http://blog.csdn.net/wangtingshuai/article/details/8631835 WebView相关阅读 Android WebView 和 javaSc ...

  10. android视频分享功能吗,Unity 调用 Android 分享功能(基于ShareRec SDK视频分享)

    需求 Mob 平台是一个强大的提供分享功能的平台,为移动开发者提供 ShareSDK 社交分享.ShareREC 手游录像分享.短信验证码 SDK 及 BigApp 等免费服务. Unity 使用 S ...

最新文章

  1. PHP学习总结(7)——PHP入门篇之PHP注释
  2. SQL语句的添加、删除、修改多种方法
  3. hdu 2444(二分图的判断以及求最大匹配)
  4. FastDFS部署及测试
  5. deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...
  6. ashx 使用Session
  7. LVM卷管理及配额设置
  8. linux大文件分割与合并
  9. 个人博客 修改markdown代码块背景颜色
  10. 数据库课程设计:医院门诊管理系统ER图、数据流程图
  11. 数据结构与算法:二路归并排序(合并排序)
  12. DAO包的作用设计和命名
  13. 华为认证网络工程师培训教程集
  14. 律师登台痛批,BSA置身事外
  15. feifei_about
  16. minicom 下载
  17. 电脑端采集手机视音频并同步
  18. 什么是UI Path?
  19. 运维真的不是夕阳产业!(不谈技术)
  20. java 由低位到高位倒序输出

热门文章

  1. python123词频统计之哈姆雷特_基于Yarn的Spark环境,统计哈姆雷特词频(1)-阿里云开发者社区...
  2. Java进阶:Dubbo
  3. Node.js:模块化思想中一个Javascript文件分析以及exports 和 module.exports的区别
  4. Javascript特效:旋转木马轮播图
  5. Pannellum:详解利用Pannellum实现Web三维全景功能
  6. 前端一键复制粘贴插件——clipboard.js的使用
  7. GIS_gdal geotiff文件与C# 数组array之间的转换
  8. 小目标Trick | Detectron2、MMDetection、YOLOv5都通用的小目标检测解决方案
  9. BZOJ4259 残缺的字符串 【fft】
  10. Centos下安装Mongodb