随笔分类 - android提高篇
摘要:一 javah引发的问题 BUG:D/dalvikvm( 1704): Trying to load lib /data/data/com.ulang/lib/libulangaudio.so 0x41052a38D/dalvikvm( 1704): Shared lib '/data/data/c
阅读全文
摘要:自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle种配置的区别(提示:在第一次用CMake时,最好在新建项目时勾选Include C++ Suppor
阅读全文
摘要:在linux 下进行开发很多人选择编写makefile 文件进行项目环境搭建,而makefile 文件依赖关系复杂,工作量很大,搞的人头很大。采用自动化的项目构建工具cmake 可以将程序员从复杂的makefile 文件中解脱出来。cmake 根据内置的规则和语法来自动生成相关的makefile 文
阅读全文
摘要:转自:http://www.yxkfw.com/?p=7223 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj.jni; public class TestJNI { public native boolean
阅读全文
摘要:ndroid JNI 提供了很强大的支持,不仅可以采用基本类型做为参数和返回值,同时也支持自定义对象做为参数和返回值,以下举例说明。 一、定义作为输入和返回的自定义类 (仅提供两个简单类型和一个打印函数) 二. 定义和JNI通信的java封装 功能:测试输入参数和返回值都为自定义对象的本地方法,同时
阅读全文
摘要:1.c中的jstring数据类型就是java传入的String对象,经过jni函数的转化就能成为c的char*。 Java 类型 本地c类型 说明 boolean jboolean 无符号 8 位 byte jbyte 无符号 8 位 char jchar 无符号 16 位 short jshort
阅读全文
摘要:Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从Socket接收到的数据流返回给Java层。我简单地总结了一下,从Java层到Jni层,
阅读全文
摘要:介绍Java如何将数据传递给C和C回调Java的方法。 java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java。C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需要调用java的方法。 Android中使用JNI七个步骤: 1.创建一个android工程 2.Java代码中写声明native 方法 public native String helloF...
阅读全文
摘要:转自:http://www.yxkfw.com/?p=7223 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj.jni; public class TestJNI { public native boolean
阅读全文
摘要:转自:http://www.shaoqun.com/a/105310.aspx 在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,工程目录下图: 以上方式的存在的问题: 1、缺少灵活性比较类似静态加
阅读全文
摘要:1、 使用NDK去编译官方的FFmpeg原版的话,还得自己实现JNI层与Java层,工程量比较大。所以移植FFmpeg到Android平台时,可以移植一些已经实现JNI与JAVA层的开源项目,毕竟软件行业从来都是站在巨人肩膀上发展的。 2、移植havlenapetr/FFMpeg havlenape
阅读全文
摘要:1、 在Android的Java层实现文件的读写操作是非常简单的,可以参看之前写的博文:http://blog.csdn.net/conowen/article/details/7296121 在JNI层实现文件的读写操作的话,就要使用到Linux的读写函数了。 2、打开文件 [cpp] view
阅读全文
摘要:1、JNINativeMethod 结构体的官方定义 [cpp] view plain copy print? typedef struct { const char* name; const char* signature; void* fnPtr; } JNINativeMethod; [cpp
阅读全文
摘要:在Java中有两类数据类型:primitive types,如,int, float, char;另一种为reference types,如,类,实例,数组。 注意:数组,不管是对象数组还是基本类型数组,都作为reference types存在,有专门的JNI方法取数组中每个元素。 1、void j
阅读全文
摘要:1、Android NDK简介 NDK全称为native development kit本地语言(C&C++)开发包。而对应的是经常接触的Android-SDK,(software development kit)软件开发包(只支持Java语言开发)。 简单来说利用NDK,可以开发纯C&C++的代码
阅读全文
摘要:1、JNI简介 JNI全称为Java Native Interface(Java本地调用)。从Java1.1开始,JNI成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C++)进行交互。并非从Android发布才引入JNI的概念的。 2、JNI与NDK 简单来说,Android的NDK提供了一些交叉编译工具链和Android自带的库,这些Androi...
阅读全文
摘要:百度了一下,google了一下,关于NDK引用的介绍无10篇中就有9.9篇是相同的,对于这种问题,我只能呜呼哀哉了!! 局部引用(函数内部对象类型变量):在C或C++中,局部变量表示只运行范围局限在该变量最近的 “{}”花括号里,常见的就是函数中的变量了,但局部引用和局部变量不同了,引用的主体是对象,指针, 因此,设涉及到内存回收问题。同局部变量一样,局部对象在函数执行完成后会被立即销...
阅读全文
摘要:Android studio 2.2 已经进入beta版本,新功能添加众多,NDK编程也得到了简化。官方博客介绍。本文介绍如何使用新版android studio调用 c++代码,为了超级通俗易懂,例子是最最最基本的例子,就是调用c++代码所需的最基本的地方,其余的自行添加即可。 1.下载最新版an
阅读全文
摘要:1. NDK简介 Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK” 1.1 NDK产生的背景 Android平台从诞生起,就已经支持C、C++开发。 众所周知,Android的SDK基于Java实现,这意味
阅读全文
摘要:1.配置Anroid Studio(这步是关键) 使用[command+,] 打开Preferences,选择External Tools,点击加号框如下图: Paste_Image.png Paste_Image.png 点击+号之后,打开Macros 配置宏命令界面,如下图: Paste_Ima
阅读全文

浙公网安备 33010602011771号