原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过JNI的可以看看我之前的博客(Windows下利用Visual Studio开发的过程):http://cherishlc.iteye.com/admin/blogs/1328136 以及自动生成工具swig的…
用习惯了C#.C++,在做字符串比较时想当然地使用如下语句: string str1 = "abcd", str2 = "abcd"; if(str1==str2) { return true; } else { return false; } 殊不知在Java中,两个String类型的变量,尽管字符相同,使用”==“进行比较,也会返回false. Java中进行字符串比较需采用String类型的equals方法: String str1 = "abcd&…
JNI 即 Java Native Interface 是 native 编程接口,它允许在Java虚拟机(VM)内运行Java代码与其他编程语言(主要是C和C++)编写的应用程序和库进行交互操作. JNI最重要的好处是它对底层Java VM的实现没有任何限制.因此,Java VM供应商可以添加对JNI的支持,而不会影响VM的其他部分.程序员可以编写一个native应用程序或库的版本,并期望它可以与支持JNI的所有Java VM一起使用. 本文主要将从以下几点讲述JNI相关的内容,用于我们了解J…
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法的中文API Android JNI学习(五)——Demo演示 本地内容主要简介如下: 1.环境展示 2.传统方式的具体流程 3.传统方式的相关问题 4.传统方式的so文件 5.通过CMake工具demo演示流程 6.CMake工具d…
程序都是调出来的. 下面我介绍下JNI层的log打印方法的使用,类似与Android sdk提供的log 1.Android 应用层 MainActivity.java 主要功能代码 a)         静态载入 So 库 b)        声明本地方法 c)         调用本地方法 代码附有注释如下: public class MainActivity extends Activity { //也就是你mk配置文件中的  LOCAL_MODULE    := NDK_02 priva…
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低. 然后,Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳性能. 接着,使用Java调用本地的C/C++代码所写的库,省去了重复开发的麻烦,并且可以利用很多开源的库提高程序效率.…
1. JNI是什么? java native interface (java本机接口) 比如方法声明: public final native Class<?>  getClass():   (来自源码Object.java) 上面方法没有方法体,但是它不是抽象方法,它是具体方法,因为它加了native修饰了,说明这个方法是使用底层C实现的. java提供JNI这个接口规范,可以去调用其他程序语言编写的功能模块(不必要利用java重新开发),可以调用C/C++,或者VB等等. 2.  为什么要…
1. JNI是什么? java native interface (java本机接口) 比如方法声明: public final native Class<?>  getClass():   (来自源码Object.java) 上面方法没有方法体,但是它不是抽象方法,它是具体方法,因为它加了native修饰了,说明这个方法是使用底层C实现的. java提供JNI这个接口规范,可以去调用其他程序语言编写的功能模块(不必要利用java重新开发),可以调用C/C++,或者VB等等. 2.  为什么要…
原文网址:http://www.jianshu.com/p/aba734d5b5cd 最近看到了很多关于热补的开源项目——Depoxed(阿里).AnFix(阿里).DynamicAPK(携程)等,它们都用到了JNI编程,并且JNI编程也贯穿了Android系统,学会JNI编程对于我们学习研究Android源码.Android安全以及Android安全加固等都是有所帮助的.但是对于我们这些写Android应用的,大部分时间都是在使用Java编程,很少使用C/C++编程,对于JNI编程也了解的比较…
在前面的一篇博客<Android NDK开发简介>,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发.今天我再详细说明一下自己的学习经验. JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器. 两者的沟通,首要的一定要对嘴型,对channel,沟通才能到位.计算机程序的基本组成,从狭义来讲,就是数据结构+算法.由于Java和C/C++是两种不同的编程语言,它们各自拥有自家定义的数据类型和结构.JNI的第一步就…
文章地址  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…
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framework或者底层打交道,还有就是混合编程之类的,以及新语言,新特性,各种牛人研究的黑科技,应接不暇,技术更新迭代太快了,我们要赶紧加快步伐了,今天就开始来入坑了--JNI,这个坑是必须要进的,啥也不说了,老司机,带我! 一.什么是JNI? Java Native Interface(java本地接口)…
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到使用gradle的方案,摸了几天,总算是摸清楚了. 其实找对了方法,用android studio配置环境要比eclipse简单很多,首先是预先准备的环境: 1.Android studio,官网最新版,我用的是2.3.1: 2.OpenCV4Android,官网最新版,我用的3.2.0: 就这两个…
下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android程序员必备的网站,里面的内容比起百度到的东西来说靠谱太多了,里面有很多新东西和使用引导,对英语的阅读能力要求有点高,但是真的是最实用的开发网站!!! Android开发中文网站:http://hukai.me/android-training-course-in-chinese/basics/ind…
在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用,具体应该怎么做?有什么要求”.OK,别担心,下面就让我们一起来利用NDK来编写一个简单的Android应用. 1 创建一个新的Project 1) 通过以下命令创建一个新的Android Project (详细的使用方法,大家可以回去重新参考博文<Android学习第二天-android常用命令>…
第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. 新建一个项目的时候,会自动生成project.properties和proguard-project.txt文件,无需自己新建,如果你的项目无法自动生成,那么你就要检查一下你的ADT版本了 如果需要对项目进行全局混码,只需要进行一步操作: 将project.properties的中 “#progua…
1. 首先需要一个OSG for android的环境 (1)NDK 现在Eclipse 对NDK已经相当友好了,已经不需要另外cygwin的参与,具体可以参考 Android NDK开发篇(一):新版NDK环境搭建(免Cygwin,超级快) (2).OSG for android的编译,参考 osg for android学习之一:windows下编译(亲测通过)  建议编译OpenGL ES2版本.   2.然后加载OSG自带的Example:osgAndroidExampleGLES2 (…
这是一份全面详细的<Android学习指南>,如果你是新手,那么下面的内容可以帮助你找到学习的线路:如果你是老手,这篇文章列出的内容也可以帮助你查漏补缺.如果各位有什么其他的建议,欢迎留言交流. 先来个思维导图: Android学习指南(2020最新版) 一.架构师筑基必备技能 Java 是Android App 开发默认的语言, Android Framework 也是默认使用Java 语言,熟练掌握Java 语言是Android 开发者的必备技能. 本篇包含知识点: 1.深入 Java 泛…
收集整理这份资料灵感来自于 trip_to_iOS, 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 Android 开发, 希望能快速帮助到他们快速入门, 找到适合自己学习资料, 节省再去收集学习资料时间. 这份资料我会不断的更新完善, 同时也欢迎更多具有丰富经验的Android开发者将自己常用的工具.学习资料.学习心得等分享上来, 我将定期筛选合并, 该份学习资料有不足的地方, 也请指出, 我会谦虚接受改正, 希望我能与大家一起来学习, 谢谢. 感谢 @GitHubDai…
在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下. 1.R.java不能实时更新 问题描述:在res文件中新增的变量不能在R.java中实时的显示出来. 解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项. 2.LogCat视窗没有显示 问题描述:在Eclipse的右下方没有显示LogCat视窗. 解决方法:选择菜单栏的“Windows”,再选…
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android开发中,如何在服务器端创建JSON数据,以及如何在Android客户端对JSON数据进行解析. 1.JSON数据结构 在JSON中有两种数据结构:对象和数组. 1.1对象 在JSON中,一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名…
常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Builder类创建者,Builder是AlertDialog的子类,而且还是它的内部类. setPositiveButton --设置最左边的按钮setNeutralButton --设置中间的按钮setNegativeButton --设置最右边的按钮 builder = new Builder(Ma…
1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件——Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以…
这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个非Java程序员对Android操作系统的理解以及一个Android工程的目录结构,为进一步学习做准备. 1 缘起 智能手机的出现与普及为人们的生活.工作带来了极大的便利,我们可以用手机随时随地.随心所欲地购物.玩游戏.聊天.听音乐等等.一个个精心设计.体验良好的移动客户端应用,让用户们爱不释手,人…
学习开发之前要了解工程目录下的文件夹下文件的用意,是以HelloWorld为例: 1.HelloWorld项目的目录结构 1.1.src文件夹 1.2.gen文件夹 1.3.Android 2.1文件夹 1.4.assets 1.5.res文件夹 1.6.AndroidManifest.xml 1.7.default.properties 一.HelloWorld项目的目录结构 在Eclipse中展开HelloWorld项目,可以看到如下图的目录结构: 1.src文件夹 (src, source…
Xamarin.Android学习之应用程序首选项 一.前言 任何App都会存在设置界面,如果开发者利用普通控件并绑定监听事件保存设置,这一过程会非常的枯燥,而且耗时.我们可以看到Android系统的设置界面里面的选项如此之多,是不是都是这样开发的呢?其实不然,Android已经给我们提供了专门设计这一功能的技术,叫应用程序首选项,今天我们将学习如何使用他们来开发配置界面以及功能. 二.准备工作 首先需要理解的就是我们设置界面还是需要控件的,但是我们所使用的控件不在是普通的控件,下面我们来简单的…
源:<Android学习指南>目录 Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会很累. 1.Android学习指南基础篇 对于有Java基础的朋友,可以通过本分类60讲左右的课程,打下比较坚实的基础. 2.Android学习指南项目实训篇 对于学过“1.Android2.2学习指南基础篇”的朋友,可以通过本分类项目的联系,加深对基础知识的理解和熟练运用. 3.Android学习指南提…
(转)Android学习-使用Async-Http实现图片压缩并上传功能 文章转载自:作者:RyaneLee链接:http://www.jianshu.com/p/940fc7ba39e1 让我头疼一个星期的图片批量上传服务器的问题最后受这篇文章的作者启发而解决,自己之前一直执着于通过uri地址找到图片然后上传图片,却没想过直接上传图片本身.感谢作者的博客和启发. 前言 (转载请注明出处,谢谢!) 最近在做一个小项目,项目中要实现上传图片到服务器,而这个例子是实现图片的尺寸压缩,将获取到的压缩图…
转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会非常累. 1.Android学习指南基础篇 对于有Java基础的朋友,能够通过本分类60讲左右的课程,打下比較坚实的基础. 2.Android学习指南项目实训篇 对于学过"1.Android2.2学习指南基础篇"的朋友,能够通过本分类项目的联系,加深对基础…