随笔分类 -  @安卓-NDK

摘要:一,下载 安装android-ndk开发包 NDK各个版本链接 二,新建项目NDKDemo,选择空Activity就可以;(注:Android studio 2.2,可通过SDK Tools 添加LLDB,CMake,更方便的开发jni程序了) 三,按F12,配置项目NDK路径: 四,在MainAc 阅读全文
posted @ 2018-09-16 19:12 chenxibobo 阅读(10882) 评论(0) 推荐(0) 编辑
摘要:上面的完成的有注释的内容,但其中最核心的也就几句,下面分别做介绍: cmake_minimum_required(VERSION 3.4.1) 用来设置在编译本地库时我们需要的最小的cmake版本,AndroidStudio自动生成,我们几乎不需要自己管。 add_library用来设置编译生成的本 阅读全文
posted @ 2017-10-16 19:13 chenxibobo 阅读(15018) 评论(1) 推荐(2) 编辑
摘要:JNI是什么? JNI(Java Native Interface)意为Java本地调用,它允许Java代码和其他语言写的代码进行交互,简单的说,一种在Java虚拟机控制下执行代码的标准机制。 NDK是什么? Android NDK(Native Development Kit )是一套工具集合,允 阅读全文
posted @ 2017-05-24 09:57 chenxibobo 阅读(1111) 评论(0) 推荐(0) 编辑
摘要:在掌握了JNI函数的使用和相关类型的映射后,以及知晓何利用javah工具生成对应的jni函数以及如何生成动态 链接库 (windos下就是.dll库,Linux就是.so库了,不懂在Window下生成dll动态库的,具体流程可看我的这篇博客: 《Android中JNI的使用之一:Java原生JNI的 阅读全文
posted @ 2017-05-24 09:56 chenxibobo 阅读(342) 评论(0) 推荐(0) 编辑
摘要:在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 。 在JNI的世界里也存在类似的数据类型,与Java比较起来,其范围更具严格性,如下: 1、primitive types 基本数据类型,如:int、 float 、char等基本类型 2、reference types 引用类型, 阅读全文
posted @ 2017-05-23 19:32 chenxibobo 阅读(561) 评论(0) 推荐(0) 编辑
摘要:要素 :1、 该函数大全是基于C语言方式的,对于C++方式可以直接转换 ,例如,对于生成一个jstring类型的方法转换分别如下: C编程环境中使用方法为:(*env) ->NewStringUTF(env , "123") ; C++编程环境中(例如,VC下)则是: env ->NewString 阅读全文
posted @ 2017-05-23 19:31 chenxibobo 阅读(363) 评论(0) 推荐(0) 编辑
摘要:在Java的编程中,我们经常会遇到各种的异常,也会处理各种的异常。处理异常在java中非常简单,我们通常会使用try-catch-finally来处理,也可以使用throw简单抛出一个异常。那么在jni编程的时候我们又是如何处理异常的呢? 异常处理流程 jni规范已经给我们做好了所有需要做的事情。回 阅读全文
posted @ 2017-05-23 18:43 chenxibobo 阅读(5499) 评论(0) 推荐(0) 编辑
摘要:一.JNI引用类型 JNI支持三种类型的 opaque reference:local references, global references,和weak global references,下面我们将逐一探讨。 local references 大部分JNI 函数都会创建LocalRef,如N 阅读全文
posted @ 2017-05-23 18:42 chenxibobo 阅读(592) 评论(0) 推荐(0) 编辑
摘要:一.访问静态字段 Java层的field和method,不管它是public,还是package、private和protected,从 JNI都可以访问到,Java面向语言的封装性不见了。 静态字段和非静态的字段访问方式不同,jni规范提供了一系列带static标示的访问静态字段的函数: 访问流程 阅读全文
posted @ 2017-05-23 18:40 chenxibobo 阅读(872) 评论(0) 推荐(0) 编辑
摘要:一.数据类型映射概述 从我们开始jni编程起,就不可能避开函数的参数与返回值的问题。java语言的数据类型和c/c++有很多不同的地方,所以我们必须考虑当在java层调用c/c++函数时,怎么正确的把java的参数传给c/c++函数,怎么正确的从c/c++函数获取正确的函数返回值;反之,当我们在c/ 阅读全文
posted @ 2017-05-23 18:37 chenxibobo 阅读(5429) 评论(0) 推荐(0) 编辑
摘要:Android平台很多地方都可以看到jni的身影,比如之前接触到一个投屏的项目,主要的代码是c/c++写的,然后通过Jni供Java层调用;另外,就拿Android系统中的Service来说,很多的Service都有java层代码和native层代码组成,native层代码会在android启动的过 阅读全文
posted @ 2017-05-23 18:35 chenxibobo 阅读(870) 评论(0) 推荐(0) 编辑
摘要:C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。 什么是库 什么是库 库是写好的现有的,成熟的,可以复用 阅读全文
posted @ 2017-05-17 15:27 chenxibobo 阅读(212) 评论(0) 推荐(0) 编辑
摘要:android基本的四大组件之一Activity,android开发的第一个hello world 创建的就是这个继承了Activity类的类,拥有对应的生命周期,由AMS维护,只需要重写父类对应的方法即可,但这都是在Java层面,如果想往C/C++层跑,就需要JNI去访问,这样基本可以满足许多性能 阅读全文
posted @ 2017-05-17 13:52 chenxibobo 阅读(9372) 评论(0) 推荐(1) 编辑
摘要:Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解 操作系统:Windows 7 JDK版本:1.6.0_33 Eclipse版本:Juno Release 1、安装JDK,并配置好其环境变量 (1)JDK的下载和安装 JDK官方下载地址: 阅读全文
posted @ 2017-05-03 14:04 chenxibobo 阅读(1340) 评论(0) 推荐(0) 编辑
摘要:JNI 卸载后跳转指定网页 c代码如下: 阅读全文
posted @ 2016-11-22 10:55 chenxibobo 阅读(1888) 评论(0) 推荐(0) 编辑
摘要:0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。 所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析 阅读全文
posted @ 2016-11-12 15:00 chenxibobo 阅读(375) 评论(0) 推荐(0) 编辑
摘要:生成 jni方式有两种:一种是通过SWIG从C++代码生成过度的java代码;另一种是通过javah的方式从java代码自动生成过度的C++代码。两种方式下的步骤流程正好相反。 第一种方式:由于需要配置SWIG环境,有点麻烦了,所以往往大家不采用这个途径,参照博文http://my.oschina. 阅读全文
posted @ 2016-11-02 17:21 chenxibobo 阅读(669) 评论(0) 推荐(0) 编辑
摘要:1. 创建一个新的工程 2. 创建一个新的类 JniText.java 点击Build--Make Project 后 选中工程 点击F4键 sdk location 中 Android ndk location 选择配置ndk 的路径 没有下载的可以到这下载:http://wear.techbro 阅读全文
posted @ 2016-11-02 17:20 chenxibobo 阅读(1466) 评论(0) 推荐(0) 编辑
摘要:简单准备工作: 以下具体操作方法可以直接百度,答案几乎是唯一可信的。 C Compiler C++ Compiler MinGW Developer Toolkit (Indudes MSYS Basic System) C Compiler C++ Compiler MinGW Developer 阅读全文
posted @ 2016-05-18 14:26 chenxibobo 阅读(4772) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示