Android NDK--自己编写调用JNI
其实ubuntu中android开发环境的搭建也很简单
(1)下载android-sdk (2)为Eclipse安装ADT,从help->Install New SoftWare进入,地址输入http://dl-ssl.google.com/android/eclipse/
要进入NDK开发再下一个android-ndk就可以了
以上开发包均可以从http://androidappdocs.appspot.com/sdk/ndk/index.html上下载得到
然后vi .bashrc,在PATH中添加3个路径:
android-sdk/tools android-sdk/platform-tools android-ndk
source .bashrc使更改生效
PATH下的工具命令可以直接使用,不需要指定路径。今天我们要用到android-sdk/tools下的android命令、android-sdk/platform-tools下的adb命令、android-ndk下的ndk-build命令。
Eclipse中使用NDK编程
1.New->Android Project
Project Name:hello-jni
Applicatin Name:hello-jni
create activity:HelloJni
Package Name:com.example.hellojni
Min SDK Version:3
2.项目下新建一个文件夹jni,该文件夹下新建两个文件:hello-jni.c和Android.mk
hello-jni.c
#include <string.h>
#include <jni.h>jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
{return (*env)->NewStringUTF(env, "Hello from JNI !");
}
Java_com_example_hellojni_HelloJni_stringFromJNI这个函数名称是有讲究的
Java_ 固定
com_example_hellojni_ java代码的包名
HelloJni_ java代码的类名
stringFromJNI java代码中使用的方法名
Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)
3.编写Android程序
com.example.hellojni.HelloJni.java
package com.example.hellojni;import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;public class HelloJni extends Activity
{/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText( stringFromJNI() );setContentView(tv);}public native String stringFromJNI();static {System.loadLibrary("hello-jni");}
}
4.编译C代码,生成共享库
进入项目的根目录$cd hello-jni
hello-jni $ android update project -p . -s
hello-jni $ ndk-build
此时libhello-jni.so就生成了,在bin下也有了apk包
5.直接在Eclipse中点击运行,或者手动安装apk包
首先输入android命令,启动模拟器
然后安装apk包:adb install bin/hello-jni.apk
6.卸载apk包
使用adb提供的shell命令
adb shell
#cd /data/app
#rm com.example.hellojin.apk
Android NDK--自己编写调用JNI相关推荐
- 怎么新建android.mk,Android NDK简单编写HelloWorld过程笔记(详细)
Android NDK,坑啊,对于不会c的人来说更是坑啊,弄了一整天才把程序调出来,在网上找了各种资料,各种解决出现的bug,终于是能够运行了. 考虑了一下,还是做个目录吧. 1.创建一个项目 2.编 ...
- 关于掌纹识别的android版本开发(实例调用JNI)
本博客下属文章均是为了记录自己的一些学习历程,因此难免有不对的地方,这些还请大家不吝指教. 一.项目背景 早在几个月前,老板便向我交代某app已在ios store上线,而该版本的撰写便是由师兄完成, ...
- 【WebRTC】在Android上用NDK编译WebRtc音频增益模块(AGC),降噪(NS),java调用JNI实现功能
目录 ·········前言 ·········前期工作 ·········编译工作 ·········编码工作(AGC-JAVA) ·········编码工作(AGC-JNI) ·········编 ...
- 【学习Android NDK开发】Java通过JNI调用native方法
参考:Android NDK,sample/hello-jni示例项目 系统环境:Ubuntu 12.04 LTS 32-bit 1.准备工作 打开Eclipse,新建Android项目: Appli ...
- Android NDK JNI 的简单使用
为什么80%的码农都做不了架构师?>>> 1.why: 为啥学 NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西:另外就是为了效率更加高些: Android n ...
- android 使用c 代码实现,JNI开发实现helloworld,调用自己的C代码实现(1)
JNI开发,实现自己的C代码,helloworld 在这里实现一个简单的demo,完成加载自己的C代码 使用Android studio,一步一步教你实现在屏幕上显示出helloworld 如下图显示 ...
- Android NDK开发: 通过C/C++调用第三方so库
文章目录 一.编写so库代码 二.安装Android NDK 三.编译so库 3.1 编辑Android.mk 3.2 编辑Application.mk 3.3 编译 四.集成到Android工程中 ...
- Android调用JNI的实现方法
目录 概述 调用JNI接口的方法 后记 概述 Android调用JNI库大致包括两种情况: 提供Java接口和so库: 这种类型的调用比较简单,要做的只是把so库放到APK或者Android系统中,之 ...
- android jni不适用ndk,Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...
最新文章
- js实现对象不可更改
- Openstack迁移DDH最佳实践
- 中南大学计算机在线考试答案,中南大学计算机考试复习题
- Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案
- 职场 | 3天准备5天面试,跳槽完成
- 如何通过使用 64 位版本 Windows 查看系统注册表 WOW6432Node
- 高质量代码才能最快投入生产
- 大数据学习笔记19:MR案例——汇总三科成绩表文件
- 天池csv转成grt代码里的luna的csv,pandas库来操作csv文件(pd.DataFrame,pd.concat,pd.Series,to_csv等)实现
- SynchronizedMap和ConcurrentHashMap 区别
- 【Asp.Net】GridView控件中Datakeys和DataKeyNames的说明
- python能做什么工作知乎-python能做什么知乎
- CCFCSP 201803-2碰撞的小球
- php远程登录linux,如何远程连接linux桌面
- 推荐算法DCN(Deep Cross)自动构造高阶交叉特征原理介绍
- 年会抽奖程序,基于 Express + Three.js的 3D 球体抽奖程序
- [机缘参悟-53]:《素书》-2-俊、豪、杰[正道章第二]
- vue封装图片滑块验证+读秒组件
- Unmarshaller转换xml到对像为空的问题
- JPEG图像格式Jphide隐写
热门文章
- 服务器邮件权限的开放,企业邮件服务器收发邮件权限
- android从服务检查,android开发分享Android:你如何检查是否启用了特定的AccessibilityService...
- 将视图转为image_JavaScript二进制数组(2)TypedArray视图
- ksu7对讲机调频软件_科普 | 数字对讲机的群呼功能原理是什么?你了解多少?...
- mariadb mysql表_mysql/mariadb学习记录——创建删除数据库、表的基本命令
- golang 数组组合成最小的整数_golang数组-----寻找数组中缺失的整数方法
- android 图片分析,Android图片处理实例分析
- 目标检测第1步:如何在Windows 10下安装MiniConda?
- java验证码工具_java 验证码工具
- php设置mysql 编码_php怎么设置mysql编码?