Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framework或者底层打交道,还有就是混合编程之类的,以及新语言,新特性,各种牛人研究的黑科技,应接不暇,技术更新迭代太快了,我们要赶紧加快步伐了,今天就开始来入坑了--JNI,这个坑是必须要进的,啥也不说了,老司机,带我! 一.什么是JNI? Java Native Interface(java本地接口)…
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Intent:意图,含义就是你想利用它调用哪个组件实现相关的功能,比如调用相机组件实现拍照.调用Contact组件获取联系人信息等. 在Android系统的四个核心组件中,除了Content provider以外,其他三个核心组件(Activity.Services.Broadcast receiver)实际上都是被一个叫做Intent的异步消息来激活的. 通过传递Intent对象调用的这些组件功能时,这些组件…
效果图: 程序列表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpX3FpbmdfeHVfa29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> 启动程序,获取程序信息: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpX3FpbmdfeHVfa…
一.java的一些概念: JRE(java  runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java  development Kit):java开发工具,包含java的所有开发工具,比如:javac.java等.JDK里包含jre. java虚拟机简称JVM:,他是运行java程序的虚拟机.好比游戏的模拟器.JVM是java语言的运行环境也是java最具有吸引力的特性之一.JVM 读取并处理编译过于平台无关的…
003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.win7下步骤: 开始 搜索框中输入"notepad" 单击notepad 2.win10下步骤方式一: 同时按"win+x",点击"运行" 运行界面的打开框中输入"notepad",点击"确定" 3.win10下…
1.交叉编译 (1)概念 在一个平台(硬件)和os(软件)环境下,编译出另一种平台和os下可以运行的二进制代码. e.g:     电脑端                                                            手机端 win7---intel     >>>     编译   >>>>      arm/mips/x86---Android(Linux2.6.6)运行的二进制代码 电脑端编写编译出可以在手机端运行的二…
1. JNI是什么? java native interface (java本机接口) 比如方法声明: public final native Class<?>  getClass():   (来自源码Object.java) 上面方法没有方法体,但是它不是抽象方法,它是具体方法,因为它加了native修饰了,说明这个方法是使用底层C实现的. java提供JNI这个接口规范,可以去调用其他程序语言编写的功能模块(不必要利用java重新开发),可以调用C/C++,或者VB等等. 2.  为什么要…
1.交叉编译 (1)概念 在一个平台(硬件)和os(软件)环境下,编译出另一种平台和os下可以运行的二进制代码. e.g:     电脑端                                                            手机端 win7---intel     >>>     编译   >>>>      arm/mips/x86---Android(Linux2.6.6)运行的二进制代码 电脑端编写编译出可以在手机端运行的二…
1. JNI是什么? java native interface (java本机接口) 比如方法声明: public final native Class<?>  getClass():   (来自源码Object.java) 上面方法没有方法体,但是它不是抽象方法,它是具体方法,因为它加了native修饰了,说明这个方法是使用底层C实现的. java提供JNI这个接口规范,可以去调用其他程序语言编写的功能模块(不必要利用java重新开发),可以调用C/C++,或者VB等等. 2.  为什么要…
版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:JNI是什么呢? JNI:JNI是JavaNative Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++) ,简单来说就是Java调C,C调Java. 二:开始搭建我们的开发环境,也是非常的简单的 Dev-C++工具下载,安装一路默认到Finish就ok了. 工欲善其事,必先利其器. 调整字体大小:菜单栏下 Tools–>…
在前面的一篇博客<Android NDK开发简介>,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发.今天我再详细说明一下自己的学习经验. JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器. 两者的沟通,首要的一定要对嘴型,对channel,沟通才能到位.计算机程序的基本组成,从狭义来讲,就是数据结构+算法.由于Java和C/C++是两种不同的编程语言,它们各自拥有自家定义的数据类型和结构.JNI的第一步就…
原文地址:http://blog.csdn.net/watkinsong/article/details/9849973 有一种方式不需要自己配置所有的Sun JDK, Android SDK以及NDK,Eclipse等设置,使用已经配置好的开发套件就可以进行直接的开发,由NVIDIA开发的开发套件Tegra Android Development Pack能够直接设置好所有的开发环境,而且最新的版本还包含了OPENCV,不想自己配置的朋友可以直接下载这个套件.但是我本人没有尝试过使用这个套件,…
文章地址  http://developer.android.com/training/articles/perf-jni.html JNI Tips JNI is the Java Native Interface. It defines a way for managed code (written in the Java programming language) to interact with native code (written in C/C++). It's vendor-ne…
从Eclipse时代到Android Studio普及,开发工具越来越好用.早些时候还需要安装Cygwin工具,从Android Studio1.3以后,在Android 环境开发JNI程序搭建开发环境变得相对简单.这里就来介绍一下急于Android Studio如何进行jni开发. 首先准备基本工具,Android Studio(>=1.3.x),NDK(ndk-r10-e).打开Android Studio 建立一个空工程,关联上NDK,操作步骤方式如下图: 设置好NDK之后,开始设置gra…
https://my.oschina.net/zhiweiofli/blog/114064 通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数.JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数.下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数.每个函数接受(作为参数)域或方法的类,它们的名称,符号和它们对…
在android项目中要实现一个需求 为了性能的要求只能用c代码来实现功能. 这样就牺牲了java跨平台性. 通过加载.so的方式,把用c实现的模块集成到app中. android提供jni层,作为一个适配器. 可以在java层调用c接口,在jni层可以通过java提供的反射机制调用java接口和创建java对象. 最后需求完成了,自测也没问题,嘻嘻,自己也开心了一下,但是提交测试后,测试人员马上报了一个bug. 出现local reference table overflow (max=512…
JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程.要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Eclipse下进行C/C++开发了. 其实JNI的原理很容易理解,其本质就是在Java层定义一个接口,同时在C层用C/C++代码实现该接口的功能并编译成动态链接库,这样 Activity就可以通过Java层接口调用生成的动态链接库,完成相应的功能.简单地说就是两点:(1)定义Java接口(JNI),(…
libs/android_runtime/android_net_wifi_Wifi.cpp部分jni接口static JNINativeMethod gWifiMethods[] = {{ "loadDriver", "()Z", (void *)android_net_wifi_loadDriver },{ "setPowerModeCommand", "(I)Z", (void*) android_net_wifi_se…
原文网址:http://www.jianshu.com/p/aba734d5b5cd 最近看到了很多关于热补的开源项目——Depoxed(阿里).AnFix(阿里).DynamicAPK(携程)等,它们都用到了JNI编程,并且JNI编程也贯穿了Android系统,学会JNI编程对于我们学习研究Android源码.Android安全以及Android安全加固等都是有所帮助的.但是对于我们这些写Android应用的,大部分时间都是在使用Java编程,很少使用C/C++编程,对于JNI编程也了解的比较…
Android For JNI(六)--交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程 终于回到我们的 android了,我们先要配置这个NDK的环境,但是之前,我们还要了解一下基本的术语 一.交叉编译 在一个平台下编译出另一个平台可以执行的二进制程序 CPU平台:ARM X86 MIPS(指令集) 系统平台:windows linux mac 原理:模拟另一个平台的特性去编译程序 源代码-->预编译-->编译-->链接-->可执行程序 工具链:一个工具使用自动调用下…
以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/article/details/8829072 http://blog.csdn.net/watkinsong/article/details/8829235 但是这两篇配置介绍中,多少的有些错误,这里重新整理这些错误以及要注意的问题,作为勘误文. 简介:本系列博客介绍了安卓开发环境的配置,和在安卓开发中,通过…
作为一个Andoird的Java程序猿,会受到Java语言的局限.由于作为一面门向对象的语言不能像C/C++那样轻易调用与硬件有关的操作.因此JNI就搭建了这样一个桥梁,使Java和C/C++语言之间能够互相调用. 作为一个Javaproject师对C/C++的语言不是非常熟悉,但仅仅需熟悉他们之间调用的原理和方法,关于C/C++的编程就交给C语言project师去吧. 在这篇文章中主要介绍NDK/JIN搭建和基本用法. 一. 环境的搭建 二. 主要的使用 步骤: (1)新建Androidpro…
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到使用gradle的方案,摸了几天,总算是摸清楚了. 其实找对了方法,用android studio配置环境要比eclipse简单很多,首先是预先准备的环境: 1.Android studio,官网最新版,我用的是2.3.1: 2.OpenCV4Android,官网最新版,我用的3.2.0: 就这两个…
</pre><p>注:假设是自己的myself.jar包,还要修改例如以下:</p><p>target/product/core_base.mk PRODUCT_BOOT_JARS := core:myself</p><p></p><p>功能:手机开机后要写个标志位. 已有实现.就是收到开机广播后,启动服务读取bp中的标志位(java代码须要等待ril准备好).并把这个标志位写入到ap中(java代码调用c++…
原文网址:http://blog.sina.com.cn/s/blog_5de73d0b0101chk1.html 一.对照表 Java类型    本地类型         描述boolean    jboolean       C/C++8位整型byte       jbyte          C/C++带符号的8位整型char       jchar          C/C++无符号的16位整型short      jshort         C/C++带符号的16位整型int    …
要看得懂android代码,首先要了解binder机制.binder机制也是android里面比較难以理解的一块,这里记录一下binder的重要概念以及实现.作为备忘. 部分内容来源于网上,如有侵权.请及时告知. 1.binder通信机制概述 binder通信是一种client-server的通信结构, 1.从表面上来看.是client通过获得一个server的代理接口,对server进行直接调用: 2.实际上,代理接口中定义的方法与server中定义的方法是一一相应的. 3.client调用某…
http://blog.csdn.net/csh624366188/article/details/8063144 对于Java程序员来说,java语言的好处和优点,我想不用我说了,大家自然会说出很多一套套的.但虽然我们作为java程序员,但我们不得不承认java语言也有一些它本身的缺点.比如在性能.和底层打交道方面都有它的缺点.所以java就提供了一些本地接口,他主要的作用就是提供一个标准的方式让java程序通过虚拟机与原生代码进行交互,这也就是我们平常常说的java本地接口(JNI——jav…
JNI反向调用JAVA程序 引述:上文讲过java线程---OS线程的关系,然后C怎样反向调用JAVA程序方法是我们这篇讲的重点 1.ThreadTest中添加run()方法 2.编译ThreadTest.java         javac ThreadTest.java    生成ThreadTest.class 3.javah ThreadTest    生成 ThreadTest.h文件 4.编写ThreadNew.c文件 #include<pthread.h> #include<…
java程序如何调用c/c++库中的函数主要分为三个步骤: 1. 加载库文件. System.loadLibrary 2. 找到函数( java函数<----映射---->c函数 ) 3. 调用函数 在映射中一般分为显式建立和隐式建立. 显式建立: 下面举个例子: /* filename native.c commod: gcc -shared -o libnative.so native.c -I/usr/lib/jvm/java-1.7.0-openjdk-amd64/include -f…
小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区别: Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择.学安卓从事移动互联方向开发,学Java从事软件.网站开发.而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好. 言简意赅的说说“转”前的准备: 其实…