android c 调用c,Android NDK 调用C
一.环境准备:
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相关推荐
- android开发打开第三方库,Android开发NDK调用三方so库
概要 在日常开发中,android NDK的作用无外乎有两种:一种是通过调用底层C/C++的算法,提高app的运行效率:另一种则是通过C/C++的特性,或者和驱动交互等,实现一些功能性的需求.接下来将 ...
- 记录过程: Android Studio4.2通过NDK调用TNN(预编译的tnn so库)
目录 0. 准备 1. 创建android ndk工程 2. 分析默认生成的工程 3. 写好java native接口 4. 实现这些java native方法(jni) 5. 修改cpp/CMake ...
- [免费专栏] Android安全之Android奇淫run-as命令,调用系统受UID限制的API
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知 ...
- Android so库开发——Android Studio调用so库(二)
一.JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivit ...
- Unity调用安卓Android的Toast
需求:在游戏中弹窗消息,调起安卓的Toast 项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试. 方法一:Unity中,C#主导 // Unity调用安卓的土司 ...
- Android之ksoap2-android详解与调用天气预报Webservice完整实例
Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...
- Android WebView 和 javaScript的互相调用(三)
原文出处:http://motalks.cn/2016/08/27/Android-WebView-JavaScript-2/ WebView相关阅读 Android WebView 和 javaSc ...
- Android WebView 和 javaScript的互相调用(二)
原文出处:http://blog.csdn.net/wangtingshuai/article/details/8635787 WebView相关阅读 Android WebView 和 javaSc ...
- Android WebView 和 javaScript的互相调用(一)
原文出处:http://blog.csdn.net/wangtingshuai/article/details/8631835 WebView相关阅读 Android WebView 和 javaSc ...
- android视频分享功能吗,Unity 调用 Android 分享功能(基于ShareRec SDK视频分享)
需求 Mob 平台是一个强大的提供分享功能的平台,为移动开发者提供 ShareSDK 社交分享.ShareREC 手游录像分享.短信验证码 SDK 及 BigApp 等免费服务. Unity 使用 S ...
最新文章
- PHP学习总结(7)——PHP入门篇之PHP注释
- SQL语句的添加、删除、修改多种方法
- hdu 2444(二分图的判断以及求最大匹配)
- FastDFS部署及测试
- deepfashion 深度学习_基于Alluxio加速混合云下的Intel Analytics Zoo开源深度学习平台...
- ashx 使用Session
- LVM卷管理及配额设置
- linux大文件分割与合并
- 个人博客 修改markdown代码块背景颜色
- 数据库课程设计:医院门诊管理系统ER图、数据流程图
- 数据结构与算法:二路归并排序(合并排序)
- DAO包的作用设计和命名
- 华为认证网络工程师培训教程集
- 律师登台痛批,BSA置身事外
- feifei_about
- minicom 下载
- 电脑端采集手机视音频并同步
- 什么是UI Path?
- 运维真的不是夕阳产业!(不谈技术)
- java 由低位到高位倒序输出
热门文章
- python123词频统计之哈姆雷特_基于Yarn的Spark环境,统计哈姆雷特词频(1)-阿里云开发者社区...
- Java进阶:Dubbo
- Node.js:模块化思想中一个Javascript文件分析以及exports 和 module.exports的区别
- Javascript特效:旋转木马轮播图
- Pannellum:详解利用Pannellum实现Web三维全景功能
- 前端一键复制粘贴插件——clipboard.js的使用
- GIS_gdal geotiff文件与C# 数组array之间的转换
- 小目标Trick | Detectron2、MMDetection、YOLOv5都通用的小目标检测解决方案
- BZOJ4259 残缺的字符串 【fft】
- Centos下安装Mongodb